Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
寫CSS的常用套路(下篇)...
點擊觀看——我寫CSS的常用套路(上篇)...
為盒子添加陰影,增加盒子的立體感,可以多層疊加,并且會使陰影更加絲滑
本demo地址:Pagination
注意到box-shadow還有個inset,用于盒子內部發光
利用這個特性我們可以在盒子內部的某個范圍內設定顏色,做出一個新月形
再加點動畫和濾鏡效果,“猩紅之月”閃亮登場!
注意到它散發著淡淡的紅光,其實就是2個偽元素應用了模糊濾鏡所產生的效果
本demo地址:Crimson Crescent Loading
文本陰影,本質上和box-shadow相同,只不過是相對于文本而言,常用于文本發光,也可通過多層疊加來制作霓虹文本和偽3D文本等效果
本demo地址:Staggered GlowIn Text
本demo地址:Neon Text
本demo地址:Staggered Bouncing 3D Loading
能將背景裁剪成文字的前景色,常用來和color: transparent配合生成漸變文本
本demo地址:Menu Hover Fill Text
漸變可以作為背景圖片的一種,具有很強的色彩效果,甚至可以用來模擬光
線性漸變是筆者最常用的漸變
這個作品用到了HTML的dialog標簽,線性漸變背景,動畫以及overflow障眼法,細心的你看出來了嗎:)
本demo地址:Confirm Modal
徑向漸變常用于生成圓形背景,上面例子中Snow的背景就是一個橢圓形的徑向漸變
此外,由于背景可以疊加,我們可以疊加多個不同位置大小的徑向漸變來生成圓點群,再加上動畫就產生了一種微粒效果,無需多余的div元素
本demo地址:Particle Button
圓錐漸變可以用于制作餅圖
用一個偽元素疊在餅圖上面,并將content設為某個值(這個值通過CSS變量計算出來),就能制作出度量計的效果,障眼法又一次完成了它的使命
本demo地址:Gauge (No SVG)
PS里的濾鏡,blur最常用
當blur濾鏡和contrast濾鏡一起使用時,會產生一種融合(gooey)的奇特效果
本demo地址:Snow Scratch
對背景應用濾鏡,產生毛玻璃的效果
本demo地址:Frosted Glass
PS里的混合模式,常用于文本在背景下的特殊效果
以下利用濾色模式(screen)實現文本視頻蒙版效果
本demo地址:Video Mask Text
PS里的裁切,可以制作各種不規則形狀。如果和動畫結合也會相當有意思
本demo地址:Name Card Hover Expand
由于clip-path有裁切功能,因此可以將多個文字疊在一起,并按比例裁切成多分,再應用交錯動畫,就能制作出酷炫的故障效果(glitch)。
本demo地址:Cross Bar Glitch Text
PS里的遮罩。所謂遮罩,就是原始圖片只顯示遮罩圖片非透明的部分
雖然clip-path能裁切出形狀,但它無法鏤空,因為形狀的里面它管不著
可能有人(包括我)會用偽元素來“模擬”鏤空(通過設置同樣的背景色),但這樣并非真的鏤空,換了個背景或浮在圖片上就會暴露出來,這時我們就要求助于遮罩了
假設,你想制作一個空心的圓環,那么你只需將一個徑向漸變作為元素的遮罩,并且第一個color-stop設置為透明,其他的color-stop設置為其他顏色即可,因為遮罩的定義就是只顯示遮罩圖片非透明的部分
注意:為了消除鋸齒,這個徑向漸變的中間需要有一個額外的color-stop用于緩沖,長度設置為原長度加0.5px即可
本demo地址:Circle Arrow Nav
投影效果,不怎么常用,適合立體感強的作品
本demo地址:Card Flip Reflection
雖然這并不是一個CSS特性,但是它經常用于完成那些CSS所做不到的事情
那么何時用它呢?當CSS動畫中有屬性無法從CSS中獲取時,自然就會使用到它了
目前CSS還尚未有獲取鼠標位置的API,因此考慮用JS來進行
通過查閱相關的DOM API,發現在監聽鼠標事件的API中,可通過e.clientX和e.clientY來獲得鼠標當前的位置
既然能夠獲取鼠標的位置,那么跟蹤鼠標的位置也就不是什么難事了:通過監聽mouseenter和mouseleave事件,來獲取鼠標出入一個元素時的位置,并用此坐標來當作鼠標的位移距離,監聽mousemove事件,來獲取鼠標在元素上移動時的位置,同樣地用此坐標來當作鼠標的位移距離,這樣一個跟蹤鼠標的效果就實現了
本demo地址:Menu Hover Image
CSS Houdini是CSS的底層API,它使我們能夠通過這套接口來擴展CSS的功能
目前來說,我們無法直接給漸變添加動畫,因為瀏覽器不理解要改變的值是什么類型
這時,我們就可以利用CSS.registerProperty()來注冊我們的自定義變量,并聲明其語法類型(syntax)為顏色類型<color>,這樣瀏覽器就能理解并對顏色應用插值方法來進行動畫
還記得上文提到的圓錐漸變conic-gradient()嗎?既然它可以用來制作餅圖,那么我們能不能讓餅圖動起來呢?答案是肯定的,定義三個變量:--color1、--color2和--pos,其中--pos的語法類型為長度百分比<length-percentage>,將其從0變為100%,餅圖就會順時針旋轉出現
利用絕對定位和層疊上下文,我們可以疊加多個從小到大的餅圖,再給它們設置不同的顏色,應用交錯動畫,就有了下面這個炫麗的效果
本demo地址:Mawaru
將交錯動畫和偽類偽元素結合起來寫出來的慎重勇者風格的菜單
本demo地址:Shinchou Menu
家好,今天給大家帶來一款旋轉字云html源碼,送給大家,獲取方式在文章末尾。
鼠標沒有經過的時候,所有的文字都是環形飄動狀態(圖1)
圖1
鼠標經過的時候,所有飄動的文字就會排列整齊(圖2)
圖2
動畫預覽(圖3)
本模板編碼:10104,需要的朋友,點擊下面的鏈接后,搜索10104,即可獲取。
就愛UI - 分享UI設計的點點滴滴
家好,不知道你們是否和我一樣存在這樣的困惑呢,雖然css入門容易,但是其內容太多,好多屬性看了似是而非,覺得自己看懂了,到自己用的時候又很犯難了,看到漂亮的效果還是無從下手,這主要還是自己對新屬性實踐太少了,不能進行靈活應用,CSS總讓一些人找不到感覺。其實學好CSS真的沒有太多捷徑,和JS編程一樣,要重視對待,要多看和多練,因為現在的CSS不再是以前的CSS啦。
比如這兩本書《 CSS 權威指南第四版》,1000多頁,買了好幾個月我到現在還沒看完,文字實在太枯燥了,看完了忘,忘了繼續看,實在看不下去,不知道大家有沒有同樣的感受呢?
好了,廢話不多說,今天我們要做的一個案例就是做一個常見的例子:在不少網站右側都有一個固定浮動的留言圖標,我們點擊這個圖標,就會側滑顯示留言內容面板。你也許會說這個不簡單嗎,使用JQ就能輕松實現,但是我想說的,為了網站的性能,能用CSS實現的盡量不要用JS,因為現在CSS已足夠強大。
今天這個例子,我們將使用純CSS實現這個效果,這里我們將用到” CSS checkbox hack“的技術,效果如下圖所示:
基于上面的效果圖,我們要創建三個元素,一個 checkbox 元素以及對應的 label 標記,和一個表單面板元素。
這里用到了一個 CSS 特性值得大家關注下:<label> 標簽的 for 屬性用于指定與哪個表單元素進行關聯,擴大表單元素的點擊區域,我們點擊 label 元素標記,其對應的表單元素將會被聚焦選中。
這個特性是我們實現這個案例的技巧之一,再結合 CSS checkbox 的偽類選擇器進行留言面板的顯示與隱藏,這樣我們就可以擺脫 JS 來實現這個案例。
基于以上思路 ,我們開始動手吧,首先我們先放置 checkbox,和其對應的 label,最后添加表單面板和相關的表單元素。
我們將通過表單的 id 屬性與表單中label元素的 for 值與其關聯,最終我們完成了 HTML 結構如下段代碼所示:
<input type="checkbox" id="mycheckbox">
<label for="mycheckbox" class="feedback-label">FEEDBACK</label>
<form class="form">
<div>
<label for="fullname">Full Name</label>
<input type="text" id="fullname">
</div>
<div>
<label for="email">Email</label>
<input type="email" id="email">
</div>
<div>
<label for="comment">Comment</label>
<textarea id="comment"></textarea>
</div>
<div>
<button type="submit">Send</button>
</div>
</form>
完成后的效果圖如下:
現在我們開始添加一些基礎的CSS的式,這里我們用到了CSS自定義變量,方便我們全局修改,還有一些 reset 規則,和表單的基礎規則樣式,示例代碼如下:
:root {
--white: white;
--gradient: linear-gradient(-45deg, #FFA600 0%, #FF5E03 50%);
--form: #eeefef;
--border-radius: 4px;
--form-width: 500px;
--form-mob-width: 320px;
}
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
body {
font: 20px/1.5 sans-serif;
background: var(--white);
}
h1 {
font-size: 2rem;
text-align: center;
margin-top: 20vh;
}
button,
label {
cursor: pointer;
}
label {
display: block;
}
button,
input,
textarea {
font-family: inherit;
font-size: 100%;
border: none;
}
textarea {
resize: none;
}
1、由于 checkbox 這個元素在案例中無需顯示,我們只是用其的偽類特性結合 label 控制留言面板的顯示與隱藏,因此我們需要將其移出可視區域,記住這里不能用隱藏屬性(display:none)。示例代碼如下:
[type="checkbox"] {
position: absolute;
left: -9999px;
}
2、接下來,我們需要添加這些CSS操作:
對應的CSS代碼如下:
/*CUSTOM VARIABLES HERE*/
.feedback-label,
.form {
position: fixed;
top: 50%;
right: 0;
}
.feedback-label {
transform-origin: top right;
transform: rotate(-90deg) translate(50%, -100%);
z-index: 2;
}
.form {
width: var(--form-width);
max-height: 90vh;
transform: translate(100%, -50%);
padding: 30px;
overflow: auto;
background: var(--form);
z-index: 1;
}
小提示:
1、這里需要強調的是 feedback-label 樣式,在其垂直變換時,我們先逆時針進行了旋轉,其 x ,y 軸的方向也是隨著旋轉的,所以是translate(50%, -100%),將其垂直居中。
2、在 form 樣式里,我們使用 transform 方法,translate(100%, -50%) 將其移出頁面顯示區域
3、我們繼續,大家不要著急,馬上就快完成了,我們需要將頁面弄的漂亮些,添加一些樣式,示例代碼如下:
/*CUSTOM VARIABLES HERE*/
.feedback-label,
.form input,
.form textarea,
.form button {
border-radius: var(--border-radius);
}
.feedback-label,
.form button {
background: var(--gradient);
color: var(--white);
}
.feedback-label:hover,
.form button:hover {
filter: hue-rotate(-45deg);
}
.feedback-label {
padding: 5px 10px;
border-radius: var(--border-radius) var(--border-radius) 0 0;
}
form div:not(:last-child) {
margin-bottom: 20px;
}
form div:last-child {
text-align: right;
}
.form input,
.form textarea {
padding: 0 5px;
width: 100%;
}
.form button {
padding: 10px 20px;
width: 50%;
max-width: 120px;
}
.form input {
height: 40px;
}
.form textarea {
height: 220px;
}
小提示:這里我們的背景色用到了 linear-gradient() 線性漸變,實現了一個漂亮的顏色漸變背景。還有一個 CSS3 語法需要關注下:hue-rotate,色調旋轉濾鏡,方便我們改變當前的顏色。
我們通過點擊 checkbox 對應的 label 標簽進行切換和顯示留言面板,這里我們用到了 :checked 偽類,以及 ~(后續同胞選擇器)和 +(緊鄰同胞選擇器),輔助元素的選擇進行樣式變換,示例代碼如下:
[type="checkbox"]:checked + .feedback-label {
transform: rotate(-90deg) translate(50%, calc((var(--form-width) + 100%) * -1));
}
[type="checkbox"]:focus + .feedback-label {
outline: 2px solid rgb(77, 144, 254);
}
[type="checkbox"]:checked ~ .form {
transform: translate(0, -50%);
}
.feedback-label,
.form {
transition: all 0.35s ease-in-out;
}
這里有幾個樣式規則我們需要聊一下:
最后,特別重點提示下我們做頁面要考慮頁面響應式適配的問題,這里我們需要針對手機設備做一些樣式的調整,比如更改表單面板的寬度由原來的 500px 調整到 320px,以及初始字體的大小,調整成16px。
最終添加的響應式代碼如下:
/*CUSTOM VARIABLES HERE*/
@media screen and (max-width: 600px) {
body {
font-size: 16px;
}
.form {
padding: 15px;
width: var(--form-mob-width);
}
form div:not(:last-child) {
margin-bottom: 10px;
}
[type="checkbox"]:checked + .feedback-label {
transform: rotate(-90deg) translate(50%, calc((var(--form-mob-width) + 100%) * -1));
}
}
好了,到這里,我們的案例就全部完成了,你可以欣賞下自己完成的杰作啦,實現起來是不是很簡單呢,最后我還是建議大家還是親自動手實踐一遍,這樣才能加深對本案例用到的CSS屬性的理解。
最終完成的效果,大家可以點擊以下網址進行在線體驗:
https://www.qianduandaren.com/demo/feedback/
今天的內容就和大家分享到這里,感謝你的閱讀,如果你喜歡我的分享,麻煩給個關注、點贊加轉發哦,你的支持,就是我分享的動力,后續會持續分享 CSS 常用案例和技巧,歡迎持續關注。
基礎章節:這30個CSS選擇器,你必須熟記(上)
基礎章節:這30個CSS選擇器,你必須熟記(中)
基礎章節:這30個CSS選擇器,你必須熟記(下)
使用 CSS Checkbox Hack 技術制作一個手風琴組件
*請認真填寫需求信息,我們會在24小時內與您取得聯系。