者:悅然wordpress建站(悅然建站)
?繼續分享wordpress建站教程。默認情況下wordpress文章都會顯示發布時間,但是我們的文章發布之后可能會進行一下修改,而修改的時間是不會顯示的,系統還是以當初發布的時間為準。
如果你的網站文章內容有時效性,或者是經常發布一些活動內容,那么讓文章顯示更新修改時間可能會有更好的用戶體驗,下面就給大家分享一下方法。
這里給大家推薦一個wordpress插件——WP Last Modified Info
WP Last Modified Info下載地址
https://downloads.wordpress.org/plugin/wp-last-modified-info.1.7.7.zip
?這個插件是英文版的,但是基本不影響我們使用,你可以在設置時使用谷歌翻譯,設置好之后保存即可。這個插件可能對有些wordpress模板主題不支持,此時你可能需要使用代碼進行調整,具體情況可以問問主題開發者。
第一個方法是使用代碼,這里給大家分享一段可以實現這個效果的代碼
function my_last_updated_date( $content ) {
$u_time=get_the_time( 'U' );
$u_modified_time=get_the_modified_time( 'U' );
$custom_content='';
if ( $u_modified_time >=$u_time + 86400 ) {
$updated_date=get_the_modified_time( 'Y-m-j h:s a' );
$custom_content .='<p class="last-updated entry-meta">最后更新 ' . $updated_date . '</p>';
}
$custom_content .=$content;
return $custom_content;
}
add_filter( 'the_content', 'my_last_updated_date' );
把上面的代碼添加到你當前wordpress主題模板的functions.php文件中,保存,然后文章就可以顯示最后修改更新的時間了。
.last-updated {
font-size: small;
text-transform: uppercase;
background-color: #fffdd4;
}
我們也可以對這個時間顯示自定議一個顯示樣式,可以參考上面的CSS代碼,添加到主題CSS,你也可以參考這段代碼自由發揮,比如可以修改字體顏色。
本次wordpress建站教程結束,這里分享的是一個比較小眾的功能需求,一般的企業網站建設可能并不需要這個功能,大家按需添加即可,真的有需要才用,沒必要的功能盡量不要添加。
<canvas> 是HTML中的一個元素,它可被用來通過 JavaScript(Canvas API 或 WebGL API)繪制圖形及圖形動畫。
Canvas API 提供了一個通過 JavaScript 和 HTML 的 <canvas> 元素來繪制圖形的方式。它可以用于動畫、游戲畫面、數據可視化、圖片編輯以及實時視頻處理等方面。
<canvas>標簽本身沒有繪圖能力,它僅僅是圖形的容器。在HTML,一般通過Javascript語言來完成實際的操作。
本文通過Javascript操作Canvas制作一個簡單的顯示當前時間的動畫時鐘,了解和學習簡單的canvas用法,僅以拋磚引玉。
首先創建一個HTML文件,為了方便管理,使用一個div標簽包裹兩個canvas標簽,并加上一些簡單的css樣式。
<!doctype html>
<html lang="zh-cn">
<head><title>Canvas繪制動畫時鐘</title>
<style>
html,body{margin:0;padding:0}
#clockWrap {
position: relative;
}
canvas {
position: absolute;
}
#clock-ui {
z-index: 2;
}
#clock-plate {
z-index: 1;
}
</style>
</head>
<body>
<div id="clockWrap">
<canvas id="clock-plate"></canvas>
<canvas id="clock-ui"></canvas>
</div>
<script></script>
</body></html>
本示例中使用了兩個canvas標簽(為什么使用兩個,一個不是更簡單嗎?),一個用于繪制鐘面,一個根據當前時間實時顯示和更新時針、分針和秒針的動態指向。好了,話不多說,開干。
一個簡單的時鐘,可以分為鐘面上的刻度和指針。其中刻度和12個數字是固定的,我們可以將它們繪制在當作背景的canvas上(示例中id為clock-plate的canvas)。
(1)要使用canvas,首先必須通過容器獲取渲染上下文:
var $=function(id){return document.querySelector(id);}//這個函數只是為了方便獲取dom元素
const canvasbg=$("#clock-plate"),
canvas=$("#clock-ui"),
ctx=canvasbg.getContext("2d"),//背景容器上下文
ctxUI=canvas.getContext("2d");//指針容器上下文,后面代碼要用
//定義畫布寬度和高度,時鐘圓直徑,并設置畫布大小
const oW=1000,oH=800,cW=400,r=cW/2,oX=oW/2,oY=oH/2;
canvas.width=oW;
canvas.height=oH;
canvasbg.width=oW;
canvasbg.height=oH;
(2)畫鐘的邊框,為了好看,這里畫兩個圈:
//畫出時鐘外圓框
ctx.lineWidth=12;
ctx.beginPath();
ctx.arc(oX, oY, r+14, 0, 2 * Math.PI);
ctx.stroke();
ctx.closePath();
ctx.lineWidth=8;
//畫出時鐘內圓框(刻度圈)
ctx.beginPath();
ctx.arc(oX, oY, r, 0, 2 * Math.PI);
ctx.stroke();
ctx.closePath();
ctx.beginPath();
邊框效果圖
(3)繪制刻度線和數字,可以利用三角函數計算出每個刻度的坐標:
利用三角函數計算刻度線的坐標位置
鐘面上有12個大格,從正上方12開始,它們的度數分別是270,300,330,0,30,60,90,120,150,180,210,240。然后利用JS的Math.sin和Math.cos分別計算出各大格的坐標。注意:js中Math.sin()和Math.cos()的參數不是角度數是弧度。可以使用Math.PI/180*角度來轉化,比如將30度轉換成弧度=Math.PI/180*30
//繪制鐘表中心點
ctx.beginPath();
ctx.arc(oX, oY, 8, 0, 2 * Math.PI);//圓心
ctx.fill();
ctx.closePath();
//設置刻度線粗細度
ctx.lineWidth=3;
//設置鐘面12個數字的字體、大小和對齊方式
ctx.font="30px serif";
ctx.textAlign="center";
ctx.textBaseline="middle";
var kdx,kdy;
//繪制12個大刻度和12個數字
//為方便計算,先定義了0-11這12個刻度對應的度數,也可以直接定義對應的弧度。
const hd=Math.PI/180,degr=[270,300,330,0,30,60,90,120,150,180,210,240];
for(var i=0;i<12;i++){
kdx=oX+Math.cos(hd*degr[i])*(r-3);
kdy=oY+Math.sin(hd*degr[i])*(r-3);
ctx.beginPath();
ctx.arc(kdx, kdy, 6, 0, 2 * Math.PI);//畫圓形大刻度
ctx.fill();
//繪制刻度對應的數字
ctx.strokeText(i==0? 12 : i,oX+Math.cos(hd*degr[i])*(r-24),oY+Math.sin(hd*degr[i])*(r-24));
ctx.closePath();
}
//繪制小刻度
ctx.lineWidth=2;
for(var i=0;i<60;i++){
if(i % 5==0) continue;//跳過與刻度重疊的刻度
x0=Math.cos(hd*i*6);
y0=Math.sin(hd*i*6);
ctx.beginPath();
ctx.moveTo(oX+x0*(r-10), oY+y0*(r-10));
ctx.lineTo(oX+x0*r, oY+y0*r); //畫短刻度線
ctx.stroke();
ctx.closePath();
}
效果如圖:
鐘面效果圖
(4)根據當前時間繪制指針
習慣上,時針粗短,分針略粗而長,秒針細長。為加大區別,示例中秒針細長并且繪制成紅色。
function drawHp(i){//繪制時針
const x0=Math.cos(hd*i*30),y0=Math.sin(hd*i*30);
drawPointer(oX,oY,oX+x0*(r-90),oY+y0*(r-90),10,"#000000");
}
function drawMp(i){//繪制分針
const x0=Math.cos(hd*i*6),y0=Math.sin(hd*i*6);
drawPointer(oX,oY,oX+x0*(r-60),oY+y0*(r-60),5,"#000000");
}
function drawSp(i){//繪制秒針
const x0=Math.cos(hd*i*6),y0=Math.sin(hd*i*6);
drawPointer(oX,oY,oX+x0*(r-20),oY+y0*(r-20),2,"#FF0000");
}
//抽取出繪制三種指針時共同的部分,注意指針繪制在渲染上下文ctxUI中
function drawPointer(ox,oy,tx,ty,width,color){
ctxUI.strokeStyle=color;
ctxUI.lineCap="round";
ctxUI.lineWidth=width;
ctxUI.beginPath();
ctxUI.moveTo(ox, oy);
ctxUI.lineTo(tx,ty);
ctxUI.stroke();
ctxUI.closePath();
}
現在已經有了繪制三種指針的方法,參數是當前時間的時、分和秒,將根據它們的值確定指針的坐標。不過,因為使用的是默認的convas坐標體系,0值實際指向3的位置,需要小小的修正一下。
window.requestAnimationFrame(function fn(){
var d=new Date();
ctxUI.clearRect(0,0,oW,oH);
//度數從0開始,而0在3刻度(15分/秒位置),修正為全值減15,如果小于0則修正回來
var hour=d.getHours(),minute=d.getMinutes()-15,second=d.getSeconds()-15;
hour=hour>11? hour-15 : hour-3;
drawHp(hour>=0? hour : 12+hour);
drawMp(minute>=0? minute : 60+minute);
drawSp(second>=0? second : 60+second);
window.requestAnimationFrame(fn);
});
接下來,調用window.requestAnimationFrame,在其中繪制并更新指標的位置。看看效果如何:
指針繪制情況與實際時間相符
貌似效果有了,截圖時電腦上的時間是10時17分,指針繪制上,時針指向10時,分針指向17。嗯,感覺有點別扭?對了,時針和分針怎么是端端正正地指向它們的整時整分刻度上呢?實際鐘表上時針和分針是展示動態進度的,此時時針應該越過10時的位置才對。沒關系,我們在繪制時針和分針時別點東西,讓它的角度值加上分針和秒針的值試試。
//修改后的繪制三種指針的方法
function drawHp(i,f,m){//繪制時針,參數:時,分,秒
const x0=Math.cos(hd*(i+(f/60)+(m/600))*30),y0=Math.sin(hd*(i+(f/60)+(m/600))*30);
drawPointer(oX,oY,oX+x0*(r-90),oY+y0*(r-90),10,"#000000");
}
function drawMp(i,f){//繪制分針,參數,分,秒
const x0=Math.cos(hd*(i+(f/60))*6),y0=Math.sin(hd*(i+(f/60))*6);
drawPointer(oX,oY,oX+x0*(r-60),oY+y0*(r-60),5,"#000000");
}
function drawSp(i){//繪制秒針
const x0=Math.cos(hd*i*6),y0=Math.sin(hd*i*6);
drawPointer(oX,oY,oX+x0*(r-20),oY+y0*(r-20),2,"#FF0000");
}
再來看看效果,嗯,立竿見影呀:
指針指向更合理了
到此為止,canvas繪制一個簡易時鐘就完成了。下面繼續優化一下。剛才使用requestAnimationFrame方法即時更新繪制情況。這個方法與刷新率有關,看看mdn上面怎么說的:
window.requestAnimationFrame() 方法會告訴瀏覽器你希望執行一個動畫。它要求瀏覽器在下一次重繪之前,調用用戶提供的回調函數。
對回調函數的調用頻率通常與顯示器的刷新率相匹配。雖然 75hz、120hz 和 144hz 也被廣泛使用,但是最常見的刷新率還是 60hz(每秒 60 個周期/幀)。為了提高性能和電池壽命,大多數瀏覽器都會暫停在后臺選項卡或者隱藏的 <iframe> 中運行的 requestAnimationFrame()。
本示例中,更新指針的位置并不需要很高的刷新頻率,可以通過節流進行一下優化:
var fps=5, fpsInterval=1000 / fps,lastTime=new Date().getTime(); //記錄上次執行的時間
function runStep() {
requestAnimationFrame(runStep);
var d=new Date(),now=d.getTime()
var elapsed=now - lastTime;
if (elapsed > fpsInterval) {
ctxUI.clearRect(0,0,oW,oH);
lastTime=now - (elapsed % fpsInterval);
//度數從0開始,而0在3刻度(15分/秒位置),修正為全值-15,如果小于0則用60減回
var hour=d.getHours(),minute=d.getMinutes()-15,second=d.getSeconds()-15;//console.log(d.getSeconds(),second);
hour=hour>11? hour-15 : hour-3;
drawHp(hour>=0? hour : 12+hour,minute+15,second+15);
drawMp(minute>=0? minute : 60+minute,second+15);
drawSp(second>=0? second : 60+second);
}
}
runStep();
當然,實現時鐘的方法是很多,比如可以使用畫布的旋轉(rotate方法)來實現指針的動態轉動等等。
完整HTML+JS源碼:
網頁開發中,跟蹤用戶與多媒體內容(如視頻)的互動是一項常見需求。無論是教育平臺、數據分析,還是用戶參與度統計,監控用戶如何觀看視頻內容都能提供寶貴的見解。這篇文章將探索如何使用JavaScript實現視頻播放時長的跟蹤。
我們的目標是跟蹤用戶觀看視頻的總時長,包括暫停的時間,并將這些信息更新到后臺系統。我們將通過捕獲播放、暫停和結束等事件來計算觀看時間。
讓我們來分解一下實現的關鍵方面:
1. HTML結構
我們將使用HTML5的<video>標簽將視頻嵌入到網頁中。每個視頻元素都將有一個唯一的標識符,以便在JavaScript中輕松訪問。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>視頻播放時長跟蹤</title>
</head>
<body>
<!-- 視頻容器 -->
<video id="video_content1" width="640" height="360" controls>
<!-- 視頻源 -->
<source src="your_video_source.mp4" type="video/mp4" />
</video>
<!-- 包含JavaScript代碼 -->
<script src="your_script.js"></script>
</body>
</html>
2. JavaScript實現
在JavaScript文件(your_script.js)中,我們將處理視頻事件并計算總的觀看時間。
// 獲取視頻元素
let videoMat="your_video_source.mp4";
let source=document.createElement('source');
let video=document.getElementById('video_content1');
// 設置視頻源
source.src=videoMat;
source.type='video/mp4';
// 將源附加到視頻元素
if (video) {
video.appendChild(source);
// 初始化變量
let startTime=null;
let lastUpdateTime=null;
let totalElapsedTime=0;
// 'play'事件監聽器
video.addEventListener('play', function () {
startTime=new Date();
lastUpdateTime=startTime;
console.log('視頻正在播放。開始時間:', startTime);
});
// 'timeupdate'事件監聽器
video.addEventListener('timeupdate', function () {
if (!video.paused && startTime !==null) {
const currentTime=new Date();
const elapsedSinceLastUpdate=(currentTime - lastUpdateTime) / 1000;
totalElapsedTime +=elapsedSinceLastUpdate;
lastUpdateTime=currentTime;
console.log("從開始到現在的觀看時間: " + totalElapsedTime + " 秒");
}
});
// 'pause'事件監聽器
video.addEventListener('pause', function () {
// 僅當視頻已在播放時存儲暫停時間
if (startTime !==null) {
const pausedTime=video.currentTime;
console.log('視頻已暫停。暫停時刻:', pausedTime);
checkAndUpdateItem(totalElapsedTime, 1, 'your_video_title');
}
});
// 'ended'事件監聽器
video.addEventListener('ended', function () {
// 視頻播放已結束
checkAndUpdateItem(totalElapsedTime, 1, 'your_video_title');
});
// 'play'事件監聽器(從暫停時間繼續播放)
video.addEventListener('play', function () {
// 如果視頻之前暫停,繼續從暫停時刻播放
if (startTime !==null) {
video.currentTime=video.currentTime;
}
});
}
解釋
實現視頻播放時長的跟蹤可以增強用戶分析,提供有關用戶參與度和內容受歡迎程度的見解。這里提供的JavaScript代碼為您集成視頻跟蹤到網頁應用中提供了基礎。
記得將‘your_video_source.mp4’和‘your_video_title’替換為實際的視頻源和標題。
祝您編碼愉快!
*請認真填寫需求信息,我們會在24小時內與您取得聯系。