日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

html弧形列表效果,web前端入门到实战:html5网页特效-弧形菜单

發布時間:2024/9/15 HTML 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html弧形列表效果,web前端入门到实战:html5网页特效-弧形菜单 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

效果:

弧形菜單,文字按規則變形以及變換透明度

簡單的javascript,上手難度:簡單

學習筆記:

text-decoration:

最主要的功能就是給文字加上附著在文字底部,上方,或者中間的線(刪除線)。

默認。定義標準的文本。

underline

定義文本下的一條線。

overline

定義文本上的一條線。

line-through

定義穿過文本下的一條線。

inherit

規定應該從父元素繼承 text-decoration 屬性的值。

隱藏超出邊界的子元素:

該例子中有13個菜單項,但只顯示出12個,因為第1個和第13個超出了父元素的邊界,被隱藏了。

overflow: hidden;

漸入隱藏效果:

第2,3,11,12個雖然沒有被隱藏,但看起來很朦朧。這樣的效果首先是設置透明度,嗯,nth-child的用法

.item:nth-child(2), .item:nth-child(3), .item:nth-child(11), .item:nth-child(12) {

opacity: 0.2;

}

然后是鄰近頂部和底部的線性漸變,這樣看來菜單項似乎和背景融為一體了

web前端開發學習Q-q-u-n: 731771211,分享學習的方法和需要注意的小細節,不停更新最新的教程和學習方法(詳細的前端項目實戰教學視頻,PDF)

.top {

top: 0;

background: linear-gradient(to bottom, steelblue 0%, rgba(70, 130, 180, 0) 100%);

}

.bottom {

bottom: 0;

background: linear-gradient(to bottom, rgba(70, 130, 180, 0) 0%, steelblue 100%);

}

按鈕觸摸漸變:

下面這行代碼的效果時,當鼠標放上按鈕時,按鈕花3秒從白色漸變成黑色,離開時立馬從黑色變為白色。

.btn {

color: white;

}

.btn:hover {

color: black;

transition: color 3s;

}

如果我們想鼠標離開時也是黑色逐漸變為白色怎么辦?同樣加個transition:

.btn {

color: white;

transition: color 3s;

}

.btn:hover {

color: black;

transition: color 3s;

}

吐槽一下,這兒的上下按鈕是兩個特殊符號,見html。win10輸入法自帶許多特殊符號,夠弄出很多好玩的東西了

??

由于符號本身很小,于是用scale放大,為了防止用戶復制內容時不小心選中它,以及為了防止被用戶看出來是個符號,加上一個user-select:none,這樣用戶就選不中了。

.btn {

transform: scale(3, 1);

user-select: none;

}

javascript詳細解釋:

第一步:

初始話一波,把除按鈕之外的東西都定義好,就形成了一開始看到的界面

const srart_pos = 90.75;

const item_count = 13;

const s = 0.52 * Math.PI / 180; //計算位移角度

var pos = [];

var elem = document.getElementsByClassName('item');

function allocationItems() {

//首先設置第7個元素處于中間最大的位置

var i;

var pp = elem[6].getElementsByTagName('a')[0].getAttribute('data-img');

document.getElementById("pic").style.backgroundImage = "url('" + pp + "')";

document.getElementById("pic").className = "img-box";

//計算其它菜單項的位置

pos[0] = srart_pos;

for (i = 1; i < item_count; i++) {

pos[i] = pos[i - 1] - 0.2;

last_pos = pos[i];

}

for (i = 0; i < item_count + 1; i++) {

elem[i].style.left = 240 + 250 * Math.sin(pos[i]) + 'px';

elem[i].style.top = 240 + 250 * Math.cos(pos[i]) + 'px';

}

}

allocationItems();

注意下面這句,getAtrribute的名字要和html設定的屬性值一樣,看到data-img了嗎?不過這個名字隨便取就行了,叫”photo”之類的也可以,只要保證js和html一樣就行

var pp = elem[6].getElementsByTagName('a')[0].getAttribute('data-img');

Can I use... Support tables for HTML5, CSS3, etc

web前端開發學習Q-q-u-n: 731771211,分享學習的方法和需要注意的小細節,不停更新最新的教程和學習方法(詳細的前端項目實戰教學視頻,PDF)

第二步:

當按下按鈕時,執行animation(),傳個參數,1為向上,0為向上。現在看看animtaion函數里面有什么。首先是定義一些東西

var $ = {

radius: 250, //圓周半徑

speed: 10 // 速度單位

}

var e = elem;

document.getElementById("pic").className = "hide";

console.log(3);

然后執行函數animate()。不過這個執行函數把別的函數當成參數傳進去了,注意看。先不管當成參數傳的函數是什么,暫時用不上。

animate(function () {

console.log(1);

var i;

for (i = 0; i < item_count; i++) {

e[i].style.left = 240 + $.radius * Math.sin(pos[i]) + 'px';

e[i].style.top = 240 + $.radius * Math.cos(pos[i]) + 'px';

if (flag) {

pos[i] += s;

} else {

pos[i] -= s;

}

} /* callback function */

}, 400, function changeItems() {

console.log(2);

var list = document.getElementById('list');

var ch = flag ? list.firstElementChild : list.lastElementChild

ch.remove();

if (flag) {

list.appendChild(ch);

} else {

list.insertBefore(ch, list.firstChild);

}

allocationItems();

});

然后看看animate()函數的定義:

function animate(draw, duration, callback) {

console.log(4);

var start = performance.now();

requestAnimationFrame(function run(time) {

console.log(5);

// 自啟動來(按下按鈕)的時差

var timePassed = time - start;

console.log(time, start)

// 不能超過最大持續時間

if (timePassed > duration)

timePassed = duration;

//重新繪制菜單項的位置

draw();

console.log(6);

if (timePassed < duration) {

console.log(7);

requestAnimationFrame(run);

} else

{

console.log(8);

callback();

console.log(9);

}

});

}

先用performance.now()確定按下按鈕的時間,儲存在start中。然后用requestAnimationFrame執行run函數。至于run函數是什么,已經在requestAnimationFrame函數中定義好了。

注意requestAnimationFrame調用時會給其中的函數傳入DOMHighResTimeStamp參數,該參數與performance.now()的返回值相同,它表示requestAnimationFrame() 開始去執行其中函數的時刻。這就是為什么run函數的定義中會有個time參數了,其實就是目前的時刻。

每次執行run函數,都要執行一遍draw函數。draw我單獨放了出來,便于理解。仔細一看,這不就是更新菜單項的位置嗎?菜單項位置并不是一下就從原位置到了指定位置,而是慢慢地移過去的,所以看起來很流暢。注意這兒的$和jquery沒有關系,看看前面的定義即可。

web前端開發學習Q-q-u-n: 731771211,分享學習的方法和需要注意的小細節,不停更新最新的教程和學習方法(詳細的前端項目實戰教學視頻,PDF)

function draw() {

console.log(1);

var i;

for (i = 0; i < item_count; i++) {

e[i].style.left = 240 + $.radius * Math.sin(pos[i]) + 'px';

e[i].style.top = 240 + $.radius * Math.cos(pos[i]) + 'px';

if (flag) {

pos[i] += s;

} else {

pos[i] -= s;

}

}

}

返回run函數,如果現在播放時間還沒到規定的時間的話,再執行一遍run函數。如此反復下去。如果到了規定時間的話,就執行callback()。

但到底執行的函數是什么樣子?單獨放出來一看,注意按向上的按鈕時,flag = 1,否則flag = 0。假如按了向上的按鈕,所有菜單項逆時針向上轉,這時第一個菜單項需要接著第十三個菜單項后面,否則后面就空了。于是就把第一個菜單項取下來remove(),掉,于是原來的第二到第十三菜單項序號都變小一個,第八個變成了第七個,變成了最大的那個。然后再把取下的第一個當成第十三個接在最后面,又成了新的菜單排列。

按向下的按鈕也是一樣。

function changeItems() {

console.log(2);

var list = document.getElementById('list');

var ch = flag ? list.firstElementChild : list.lastElementChild

ch.remove();

if (flag) {

list.appendChild(ch);

} else {

list.insertBefore(ch, list.firstChild);

}

allocationItems();

}

總結

以上是生活随笔為你收集整理的html弧形列表效果,web前端入门到实战:html5网页特效-弧形菜单的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美三级一级 | 欧美成人精品一区二区综合免费 | 久久视频在线观看 | 国产精品波多野结衣 | 欧美亚韩一区二区三区 | 午夜一区二区视频 | 婷婷综合在线 | 精品国产专区 | 人与动物毛片 | 成人欧美一区二区三区在线播放 | 国产白拍 | 日韩欧美v | 九九热精彩视频 | 欧美最猛性xxxxx(亚洲精品) | 国产精品久久久久无码av | 精品国产精品网麻豆系列 | 樱桃视频污污 | 亚洲精品美女网站 | 天堂网成人 | 天堂中文在线资 | 精品人妻视频在线 | 日本人毛片 | www.伊人网 | 操人视频免费看 | 青青视频网 | 亚洲综合五月天 | 精品伦精品一区二区三区视频密桃 | 亚洲码国产精品高潮在线 | 一级毛片黄片 | 偷拍亚洲精品 | 禁漫天堂免费网站 | 成人在线视频网站 | 日本一区二区色 | 国产黄色片在线 | 性猛交富婆╳xxx乱大交天津 | 久久久一二三区 | 亚洲成色| 天堂中文在线观看 | 欧美一区二区福利 | 我和我的太阳泰剧在线观看泰剧 | av午夜影院| 免费视频一区 | 久久久高清视频 | 四虎影视免费永久观看在线 | 伊人成综合网 | 亚洲日本影院 | 山村淫强伦寡妇 | 亚洲精品九九 | 日韩av在线观看免费 | 亚洲精品久久久久 | 午夜剧场91| 少妇太爽了在线观看 | 日本中文字幕免费 | 久久久网站 | 青娱乐国产在线 | 激情无码人妻又粗又大 | 亚洲一区 在线播放 | 福利在线播放 | 久久影视中文字幕 | videos亚洲 | 茄子爱啪啪 | 美女精品网站 | www.av日韩| 欧美亚洲国产日韩 | 91最新在线 | 特级av| 日韩一级二级三级 | 亚洲一区二区中文字幕 | 五月六月婷婷 | 日本黄色片段 | 国产精品一区二区三区久久 | 日本高清无吗 | 伊人小视频 | 97自拍网 | 在线成人影视 | 熟女俱乐部一区二区视频在线 | 久久久久久久久97 | 91超碰在线播放 | 韩国av一区二区 | 国产免费一级视频 | 97人人视频| 91精品人妻互换一区二区 | 国产黑丝av| 一区二区三区高清不卡 | 日韩精品第一区 | www一区 | 里番acg★同人里番本子大全 | 在线观看日韩精品 | 国产黄色美女视频 | 国产第一精品 | 亚洲三页| 久久久999国产精品 天堂av中文在线 | 久久色婷婷 | www日日日 | 97超碰97| 中文一区二区 | 国产精品久久久久久久久久久久久久久久 | 亚洲欧美一区在线 | 欧美在线视频不卡 |