摘要:表情繪制使用純代碼繪制。其它表情請看源代碼。當評分改變,這個高度很大的元素就向上移動,把需要的表情顯示出來。源碼不同投票不同表情
特點:
根據不同評分顯示不同表情,并且這些表情看起來像是在一個傳送帶上可以滾動
使用純代碼(svg)繪制表情以及用于評分的星星
html+css,無javascript,上手難度:很簡單
歡迎來我的博客看此文章:http://clatterrr.com/archives...
源碼:效果演示:https://clatterrr.github.io/s...
源碼:https://github.com/clatterrr/...
學習筆記 flex布局使用flex,這是一種自適應屏幕的布局。注意align-items和justify-content也和flex有關。具體請看https://www.runoob.com/cssref...
.container { display: flex; }星星繪制
background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns="http://www.w3.org/2000/svg" width="126.729" height="126.73"%3e%3cpath fill="%23fcd93a" d="M121.215 44.212l-34.899-3.3c-2.2-.2-4.101-1.6-5-3.7l-12.5-30.3c-2-5-9.101-5-11.101 0l-12.4 30.3c-.8 2.1-2.8 3.5-5 3.7l-34.9 3.3c-5.2.5-7.3 7-3.4 10.5l26.3 23.1c1.7 1.5 2.4 3.7 1.9 5.9l-7.9 32.399c-1.2 5.101 4.3 9.3 8.9 6.601l29.1-17.101c1.9-1.1 4.2-1.1 6.1 0l29.101 17.101c4.6 2.699 10.1-1.4 8.899-6.601l-7.8-32.399c-.5-2.2.2-4.4 1.9-5.9l26.3-23.1c3.8-3.5 1.6-10-3.6-10.5z"/%3e%3c/svg%3e");
css中有這么一大段代碼,共有三處。用svg來繪制評分的星星。
關于svg如何繪制具體請看https://www.runoob.com/svg/sv...
這三處代碼,從上往下,第一處是繪制用于評分的灰色星星,第二處是用于當評出某個分數后,代表評分的星星的樣子。第三處是用于,當鼠標碰到某個星星時,該星星和之前的星星所顯示的樣子。這三處代碼不同的地方是fill 后面的數值,這代表著顏色。
不過,根據評分怎么顯示對應的星星數呢?假設我點了第四顆星,為什么第一到第三顆星也亮了呢?
注意這兒的選擇器,星星實際上是。
A~B 匹配B元素,滿足條件:B是A之后的任意一個兄弟節點(AB有相同的父節點,B在A之后,但不一定是緊挨著A)
A>B 匹配B元素,滿足條件:B是A的直接子節點
表格詳細版本:https://developer.mozilla.org...
這兒的css樣式代碼即為,當選擇某顆星后,這顆星的lable,即用來顯示星星樣子的元素變亮,以及,和這顆星label為兄弟元素但在此星lable之后的label元素也變亮。為什么可以這么設置呢?看看html
第一星到第五星其實是倒著排的,所以當選擇了第四星,第四星之前的三,二,一星也亮了。但是問題時,倒著排,那么顯示出來不也是倒著的,從右往左么?再看看css
.rating { flex-direction: row-reverse; }
嗯,css再倒著來一遍,保證了第三星是第四星后面的元素,同時第三星還是在第四星左邊。簡直巧妙。
表情繪制使用svg純代碼繪制。例如下面這段代碼就是繪制了左圖最上方那個扁嘴的表情,項目中只有黑白色是因為用了grayscale濾鏡,之前說過。其它表情請看源代碼。關于svg如何繪制具體請看https://www.runoob.com/svg/sv...
表情滾動
#rating-1:checked ~ .emoji-wrapper > .emoji { -webkit-transform: translateY(-100px); transform: translateY(-100px); }
如上圖所示,表情被繪制在一張高度很大的元素上,但只顯示最上面的部分。當評分改變,這個高度很大的元素就向上移動,把需要的表情顯示出來。
源碼:html
不同投票不同表情
css
* { box-sizing: border-box; } .container { display: flex; flex-wrap: wrap; height: 100vh; align-items: center; justify-content: center; padding: 0 20px; } .rating { display: flex; width: 100%; justify-content: center; overflow: hidden; flex-direction: row-reverse; height: 150px; position: relative; } .rating-0 { -webkit-filter: grayscale(100%); filter: grayscale(100%); } .rating > input { display: none; } .rating > label { cursor: pointer; width: 40px; height: 40px; margin-top: auto; background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns="http://www.w3.org/2000/svg" width="126.729" height="126.73"%3e%3cpath fill="%23e3e3e3" d="M121.215 44.212l-34.899-3.3c-2.2-.2-4.101-1.6-5-3.7l-12.5-30.3c-2-5-9.101-5-11.101 0l-12.4 30.3c-.8 2.1-2.8 3.5-5 3.7l-34.9 3.3c-5.2.5-7.3 7-3.4 10.5l26.3 23.1c1.7 1.5 2.4 3.7 1.9 5.9l-7.9 32.399c-1.2 5.101 4.3 9.3 8.9 6.601l29.1-17.101c1.9-1.1 4.2-1.1 6.1 0l29.101 17.101c4.6 2.699 10.1-1.4 8.899-6.601l-7.8-32.399c-.5-2.2.2-4.4 1.9-5.9l26.3-23.1c3.8-3.5 1.6-10-3.6-10.5z"/%3e%3c/svg%3e"); background-repeat: no-repeat; background-position: center; background-size: 76%; transition: .3s; } .rating > input:checked ~ label, .rating > input:checked ~ label ~ label { background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns="http://www.w3.org/2000/svg" width="126.729" height="126.73"%3e%3cpath fill="%23fcd93a" d="M121.215 44.212l-34.899-3.3c-2.2-.2-4.101-1.6-5-3.7l-12.5-30.3c-2-5-9.101-5-11.101 0l-12.4 30.3c-.8 2.1-2.8 3.5-5 3.7l-34.9 3.3c-5.2.5-7.3 7-3.4 10.5l26.3 23.1c1.7 1.5 2.4 3.7 1.9 5.9l-7.9 32.399c-1.2 5.101 4.3 9.3 8.9 6.601l29.1-17.101c1.9-1.1 4.2-1.1 6.1 0l29.101 17.101c4.6 2.699 10.1-1.4 8.899-6.601l-7.8-32.399c-.5-2.2.2-4.4 1.9-5.9l26.3-23.1c3.8-3.5 1.6-10-3.6-10.5z"/%3e%3c/svg%3e"); } .rating > input:not(:checked) ~ label:hover, .rating > input:not(:checked) ~ label:hover ~ label { background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns="http://www.w3.org/2000/svg" width="126.729" height="126.73"%3e%3cpath fill="%23d8b11e" d="M121.215 44.212l-34.899-3.3c-2.2-.2-4.101-1.6-5-3.7l-12.5-30.3c-2-5-9.101-5-11.101 0l-12.4 30.3c-.8 2.1-2.8 3.5-5 3.7l-34.9 3.3c-5.2.5-7.3 7-3.4 10.5l26.3 23.1c1.7 1.5 2.4 3.7 1.9 5.9l-7.9 32.399c-1.2 5.101 4.3 9.3 8.9 6.601l29.1-17.101c1.9-1.1 4.2-1.1 6.1 0l29.101 17.101c4.6 2.699 10.1-1.4 8.899-6.601l-7.8-32.399c-.5-2.2.2-4.4 1.9-5.9l26.3-23.1c3.8-3.5 1.6-10-3.6-10.5z"/%3e%3c/svg%3e"); } .emoji-wrapper { width: 100%; text-align: center; height: 100px; overflow: hidden; position: absolute; top: 0; left: 0; } .emoji-wrapper:before, .emoji-wrapper:after { content: ""; height: 15px; width: 100%; position: absolute; left: 0; z-index: 1; } .emoji-wrapper:before { top: 0; background: linear-gradient(to bottom, white 0%, white 35%, rgba(255, 255, 255, 0) 100%); } .emoji-wrapper:after { bottom: 0; background: linear-gradient(to top, white 0%, white 35%, rgba(255, 255, 255, 0) 100%); } .emoji { display: flex; flex-direction: column; align-items: center; transition: .3s; } .emoji > svg { margin: 15px 0; width: 70px; height: 70px; flex-shrink: 0; } #rating-1:checked ~ .emoji-wrapper > .emoji { -webkit-transform: translateY(-100px); transform: translateY(-100px); } #rating-2:checked ~ .emoji-wrapper > .emoji { -webkit-transform: translateY(-200px); transform: translateY(-200px); } #rating-3:checked ~ .emoji-wrapper > .emoji { -webkit-transform: translateY(-300px); transform: translateY(-300px); } #rating-4:checked ~ .emoji-wrapper > .emoji { -webkit-transform: translateY(-400px); transform: translateY(-400px); } #rating-5:checked ~ .emoji-wrapper > .emoji { -webkit-transform: translateY(-500px); transform: translateY(-500px); } .feedback { max-width: 360px; background-color: #fff; width: 100%; padding: 30px; border-radius: 8px; display: flex; flex-direction: column; flex-wrap: wrap; align-items: center; box-shadow: 0 4px 30px rgba(0, 0, 0, 0.05); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/116318.html
摘要:表情繪制使用純代碼繪制。其它表情請看源代碼。當評分改變,這個高度很大的元素就向上移動,把需要的表情顯示出來。源碼不同投票不同表情 showImg(https://segmentfault.com/img/bVbwOQe?w=254&h=198); 特點: 根據不同評分顯示不同表情,并且這些表情看起來像是在一個傳送帶上可以滾動 使用純代碼(svg)繪制表情以及用于評分的星星 html+...
摘要:對于來說,表示元素,除了優先級更高之外,與選擇器相同。從父元素繼承顏色漸變背景漂亮的深藍淺藍效果就是這個的作用。媒體查詢,簡單來說就是可以讓網頁自動適應不同的設備屏幕尺寸。具體請看貝塞爾曲線,用來生成水墨效果的關鍵。 showImg(https://segmentfault.com/img/bVbwNaj); 效果 鼠標觸碰按鈕,出現水墨風格動畫 屏幕自適應 一份html文件,一份c...
摘要:對于來說,表示元素,除了優先級更高之外,與選擇器相同。從父元素繼承顏色漸變背景漂亮的深藍淺藍效果就是這個的作用。媒體查詢,簡單來說就是可以讓網頁自動適應不同的設備屏幕尺寸。具體請看貝塞爾曲線,用來生成水墨效果的關鍵。 showImg(https://segmentfault.com/img/bVbwNaj); 效果 鼠標觸碰按鈕,出現水墨風格動畫 屏幕自適應 一份html文件,一份c...
摘要:好看漂亮的網頁特效學習筆記猜猜下一個顏色是什么分步詳細解釋第一步很簡單的初始化函數。繪制新的火焰紅色的圓以及火花之前元素,即新的火焰紅色的圓以及火花的生命周期未完的話,就繼續更新它,否則就刪除它第五步以火焰為粒子。 showImg(https://segmentfault.com/img/bVbwV8z?w=376&h=388); 效果: 逼真的火焰跟隨鼠標,還冒出火花,照亮背景文字...
摘要:定義標準的文本。然后看看函數的定義自啟動來按下按鈕的時差不能超過最大持續時間重新繪制菜單項的位置先用確定按下按鈕的時間,儲存在中。如果到了規定時間的話,就執行。然后再把取下的第一個當成第十三個接在最后面,又成了新的菜單排列。 showImg(https://segmentfault.com/img/bVbw1zV?w=818&h=479); 效果: 弧形菜單,文字按規則變形以及變換透...
閱讀 3257·2021-10-11 10:59
閱讀 2812·2021-10-11 10:58
閱讀 2243·2021-09-04 16:45
閱讀 2716·2019-08-30 15:44
閱讀 671·2019-08-30 15:44
閱讀 3198·2019-08-30 10:51
閱讀 1597·2019-08-29 18:46
閱讀 2748·2019-08-29 13:57