整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          CSS奇思妙想-寫(xiě)CSS的一些奇怪套路你都會(huì)哪些?(

          CSS奇思妙想-寫(xiě)CSS的一些奇怪套路你都會(huì)哪些?(下篇)

          寫(xiě)CSS的常用套路(下篇)...

          點(diǎn)擊觀看——我寫(xiě)CSS的常用套路(上篇)...

          box-shadow

          為盒子添加陰影,增加盒子的立體感,可以多層疊加,并且會(huì)使陰影更加絲滑

          本demo地址:Pagination

          內(nèi)發(fā)光

          注意到box-shadow還有個(gè)inset,用于盒子內(nèi)部發(fā)光

          利用這個(gè)特性我們可以在盒子內(nèi)部的某個(gè)范圍內(nèi)設(shè)定顏色,做出一個(gè)新月形

          再加點(diǎn)動(dòng)畫(huà)和濾鏡效果,“猩紅之月”閃亮登場(chǎng)!

          注意到它散發(fā)著淡淡的紅光,其實(shí)就是2個(gè)偽元素應(yīng)用了模糊濾鏡所產(chǎn)生的效果

          本demo地址:Crimson Crescent Loading

          text-shadow

          文本陰影,本質(zhì)上和box-shadow相同,只不過(guò)是相對(duì)于文本而言,常用于文本發(fā)光,也可通過(guò)多層疊加來(lái)制作霓虹文本和偽3D文本等效果

          發(fā)光文本

          本demo地址:Staggered GlowIn Text

          霓虹文本

          本demo地址:Neon Text

          偽3D文本

          本demo地址:Staggered Bouncing 3D Loading

          background-clip:text

          能將背景裁剪成文字的前景色,常用來(lái)和color: transparent配合生成漸變文本

          本demo地址:Menu Hover Fill Text

          gradient

          漸變可以作為背景圖片的一種,具有很強(qiáng)的色彩效果,甚至可以用來(lái)模擬光

          linear-gradient

          線性漸變是筆者最常用的漸變

          這個(gè)作品用到了HTML的dialog標(biāo)簽,線性漸變背景,動(dòng)畫(huà)以及overflow障眼法,細(xì)心的你看出來(lái)了嗎:)

          本demo地址:Confirm Modal

          radial-gradient

          徑向漸變常用于生成圓形背景,上面例子中Snow的背景就是一個(gè)橢圓形的徑向漸變

          此外,由于背景可以疊加,我們可以疊加多個(gè)不同位置大小的徑向漸變來(lái)生成圓點(diǎn)群,再加上動(dòng)畫(huà)就產(chǎn)生了一種微粒效果,無(wú)需多余的div元素

          本demo地址:Particle Button

          conic-gradient

          圓錐漸變可以用于制作餅圖

          用一個(gè)偽元素疊在餅圖上面,并將content設(shè)為某個(gè)值(這個(gè)值通過(guò)CSS變量計(jì)算出來(lái)),就能制作出度量計(jì)的效果,障眼法又一次完成了它的使命

          本demo地址:Gauge (No SVG)

          filter

          PS里的濾鏡,blur最常用

          融合效果

          當(dāng)blur濾鏡和contrast濾鏡一起使用時(shí),會(huì)產(chǎn)生一種融合(gooey)的奇特效果

          本demo地址:Snow Scratch

          backdrop-filter

          對(duì)背景應(yīng)用濾鏡,產(chǎn)生毛玻璃的效果

          本demo地址:Frosted Glass

          mix-blend-mode

          PS里的混合模式,常用于文本在背景下的特殊效果

          以下利用濾色模式(screen)實(shí)現(xiàn)文本視頻蒙版效果

          本demo地址:Video Mask Text

          clip-path

          PS里的裁切,可以制作各種不規(guī)則形狀。如果和動(dòng)畫(huà)結(jié)合也會(huì)相當(dāng)有意思

          本demo地址:Name Card Hover Expand

          故障效果

          由于clip-path有裁切功能,因此可以將多個(gè)文字疊在一起,并按比例裁切成多分,再應(yīng)用交錯(cuò)動(dòng)畫(huà),就能制作出酷炫的故障效果(glitch)。

          本demo地址:Cross Bar Glitch Text

          mask

          PS里的遮罩。所謂遮罩,就是原始圖片只顯示遮罩圖片非透明的部分

          鏤空效果

          雖然clip-path能裁切出形狀,但它無(wú)法鏤空,因?yàn)樾螤畹睦锩嫠懿恢?/p>

          可能有人(包括我)會(huì)用偽元素來(lái)“模擬”鏤空(通過(guò)設(shè)置同樣的背景色),但這樣并非真的鏤空,換了個(gè)背景或浮在圖片上就會(huì)暴露出來(lái),這時(shí)我們就要求助于遮罩了

          假設(shè),你想制作一個(gè)空心的圓環(huán),那么你只需將一個(gè)徑向漸變作為元素的遮罩,并且第一個(gè)color-stop設(shè)置為透明,其他的color-stop設(shè)置為其他顏色即可,因?yàn)檎谡值亩x就是只顯示遮罩圖片非透明的部分

          注意:為了消除鋸齒,這個(gè)徑向漸變的中間需要有一個(gè)額外的color-stop用于緩沖,長(zhǎng)度設(shè)置為原長(zhǎng)度加0.5px即可

          本demo地址:Circle Arrow Nav

          -webkit-box-reflect

          投影效果,不怎么常用,適合立體感強(qiáng)的作品

          本demo地址:Card Flip Reflection

          web animations

          雖然這并不是一個(gè)CSS特性,但是它經(jīng)常用于完成那些CSS所做不到的事情

          那么何時(shí)用它呢?當(dāng)CSS動(dòng)畫(huà)中有屬性無(wú)法從CSS中獲取時(shí),自然就會(huì)使用到它了

          跟蹤鼠標(biāo)的位置

          目前CSS還尚未有獲取鼠標(biāo)位置的API,因此考慮用JS來(lái)進(jìn)行

          通過(guò)查閱相關(guān)的DOM API,發(fā)現(xiàn)在監(jiān)聽(tīng)鼠標(biāo)事件的API中,可通過(guò)e.clientX和e.clientY來(lái)獲得鼠標(biāo)當(dāng)前的位置

          既然能夠獲取鼠標(biāo)的位置,那么跟蹤鼠標(biāo)的位置也就不是什么難事了:通過(guò)監(jiān)聽(tīng)mouseenter和mouseleave事件,來(lái)獲取鼠標(biāo)出入一個(gè)元素時(shí)的位置,并用此坐標(biāo)來(lái)當(dāng)作鼠標(biāo)的位移距離,監(jiān)聽(tīng)mousemove事件,來(lái)獲取鼠標(biāo)在元素上移動(dòng)時(shí)的位置,同樣地用此坐標(biāo)來(lái)當(dāng)作鼠標(biāo)的位移距離,這樣一個(gè)跟蹤鼠標(biāo)的效果就實(shí)現(xiàn)了

          本demo地址:Menu Hover Image

          CSS Houdini

          CSS Houdini是CSS的底層API,它使我們能夠通過(guò)這套接口來(lái)擴(kuò)展CSS的功能

          讓漸變動(dòng)起來(lái)

          目前來(lái)說(shuō),我們無(wú)法直接給漸變添加動(dòng)畫(huà),因?yàn)闉g覽器不理解要改變的值是什么類型

          這時(shí),我們就可以利用CSS.registerProperty()來(lái)注冊(cè)我們的自定義變量,并聲明其語(yǔ)法類型(syntax)為顏色類型<color>,這樣瀏覽器就能理解并對(duì)顏色應(yīng)用插值方法來(lái)進(jìn)行動(dòng)畫(huà)

          還記得上文提到的圓錐漸變conic-gradient()嗎?既然它可以用來(lái)制作餅圖,那么我們能不能讓餅圖動(dòng)起來(lái)呢?答案是肯定的,定義三個(gè)變量:--color1、--color2和--pos,其中--pos的語(yǔ)法類型為長(zhǎng)度百分比<length-percentage>,將其從0變?yōu)?00%,餅圖就會(huì)順時(shí)針旋轉(zhuǎn)出現(xiàn)

          利用絕對(duì)定位和層疊上下文,我們可以疊加多個(gè)從小到大的餅圖,再給它們?cè)O(shè)置不同的顏色,應(yīng)用交錯(cuò)動(dòng)畫(huà),就有了下面這個(gè)炫麗的效果

          本demo地址:Mawaru

          彩蛋

          將交錯(cuò)動(dòng)畫(huà)和偽類偽元素結(jié)合起來(lái)寫(xiě)出來(lái)的慎重勇者風(fēng)格的菜單

          本demo地址:Shinchou Menu

          家好,今天給大家?guī)?lái)一款旋轉(zhuǎn)字云html源碼,送給大家,獲取方式在文章末尾。

          鼠標(biāo)沒(méi)有經(jīng)過(guò)的時(shí)候,所有的文字都是環(huán)形飄動(dòng)狀態(tài)(圖1)

          圖1

          鼠標(biāo)經(jīng)過(guò)的時(shí)候,所有飄動(dòng)的文字就會(huì)排列整齊(圖2)

          圖2

          動(dòng)畫(huà)預(yù)覽(圖3)

          本模板編碼:10104,需要的朋友,點(diǎn)擊下面的鏈接后,搜索10104,即可獲取。

          就愛(ài)UI - 分享UI設(shè)計(jì)的點(diǎn)點(diǎn)滴滴


          家好,不知道你們是否和我一樣存在這樣的困惑呢,雖然css入門(mén)容易,但是其內(nèi)容太多,好多屬性看了似是而非,覺(jué)得自己看懂了,到自己用的時(shí)候又很犯難了,看到漂亮的效果還是無(wú)從下手,這主要還是自己對(duì)新屬性實(shí)踐太少了,不能進(jìn)行靈活應(yīng)用,CSS總讓一些人找不到感覺(jué)。其實(shí)學(xué)好CSS真的沒(méi)有太多捷徑,和JS編程一樣,要重視對(duì)待,要多看和多練,因?yàn)楝F(xiàn)在的CSS不再是以前的CSS啦。

          比如這兩本書(shū)《 CSS 權(quán)威指南第四版》,1000多頁(yè),買(mǎi)了好幾個(gè)月我到現(xiàn)在還沒(méi)看完,文字實(shí)在太枯燥了,看完了忘,忘了繼續(xù)看,實(shí)在看不下去,不知道大家有沒(méi)有同樣的感受呢?

          好了,廢話不多說(shuō),今天我們要做的一個(gè)案例就是做一個(gè)常見(jiàn)的例子:在不少網(wǎng)站右側(cè)都有一個(gè)固定浮動(dòng)的留言圖標(biāo),我們點(diǎn)擊這個(gè)圖標(biāo),就會(huì)側(cè)滑顯示留言內(nèi)容面板。你也許會(huì)說(shuō)這個(gè)不簡(jiǎn)單嗎,使用JQ就能輕松實(shí)現(xiàn),但是我想說(shuō)的,為了網(wǎng)站的性能,能用CSS實(shí)現(xiàn)的盡量不要用JS,因?yàn)楝F(xiàn)在CSS已足夠強(qiáng)大。

          今天這個(gè)例子,我們將使用純CSS實(shí)現(xiàn)這個(gè)效果,這里我們將用到” CSS checkbox hack“的技術(shù),效果如下圖所示:


          一、創(chuàng)建 HTML 結(jié)構(gòu)

          基于上面的效果圖,我們要?jiǎng)?chuàng)建三個(gè)元素,一個(gè) checkbox 元素以及對(duì)應(yīng)的 label 標(biāo)記,和一個(gè)表單面板元素。

          這里用到了一個(gè) CSS 特性值得大家關(guān)注下:<label> 標(biāo)簽的 for 屬性用于指定與哪個(gè)表單元素進(jìn)行關(guān)聯(lián),擴(kuò)大表單元素的點(diǎn)擊區(qū)域,我們點(diǎn)擊 label 元素標(biāo)記,其對(duì)應(yīng)的表單元素將會(huì)被聚焦選中。

          這個(gè)特性是我們實(shí)現(xiàn)這個(gè)案例的技巧之一,再結(jié)合 CSS checkbox 的偽類選擇器進(jìn)行留言面板的顯示與隱藏,這樣我們就可以擺脫 JS 來(lái)實(shí)現(xiàn)這個(gè)案例。

          基于以上思路 ,我們開(kāi)始動(dòng)手吧,首先我們先放置 checkbox,和其對(duì)應(yīng)的 label,最后添加表單面板和相關(guān)的表單元素。

          我們將通過(guò)表單的 id 屬性與表單中l(wèi)abel元素的 for 值與其關(guān)聯(lián),最終我們完成了 HTML 結(jié)構(gòu)如下段代碼所示:

          <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>
          

          完成后的效果圖如下:

          二、定義基礎(chǔ)的樣式

          現(xiàn)在我們開(kāi)始添加一些基礎(chǔ)的CSS的式,這里我們用到了CSS自定義變量,方便我們?nèi)中薷模€有一些 reset 規(guī)則,和表單的基礎(chǔ)規(guī)則樣式,示例代碼如下:

          :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;
          }
          

          三、 定義表單元素相關(guān)樣式

          1、由于 checkbox 這個(gè)元素在案例中無(wú)需顯示,我們只是用其的偽類特性結(jié)合 label 控制留言面板的顯示與隱藏,因此我們需要將其移出可視區(qū)域,記住這里不能用隱藏屬性(display:none)。示例代碼如下:

          [type="checkbox"] {
            position: absolute;
            left: -9999px;
          }
          

          2、接下來(lái),我們需要添加這些CSS操作:

          • 使用 fix 屬性將 checkbox 對(duì)應(yīng)的 label 標(biāo)簽元素固定在右側(cè)的中央。
          • 垂直先顯示”FEEDBACK“文本。
          • 隱藏表單面板,我們這里將其往右移動(dòng)其寬度的 100% 的距離,并垂直居中。

          對(duì)應(yīng)的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、這里需要強(qiáng)調(diào)的是 feedback-label 樣式,在其垂直變換時(shí),我們先逆時(shí)針進(jìn)行了旋轉(zhuǎn),其 x ,y 軸的方向也是隨著旋轉(zhuǎn)的,所以是translate(50%, -100%),將其垂直居中。

          2、在 form 樣式里,我們使用 transform 方法,translate(100%, -50%) 將其移出頁(yè)面顯示區(qū)域

          3、我們繼續(xù),大家不要著急,馬上就快完成了,我們需要將頁(yè)面弄的漂亮些,添加一些樣式,示例代碼如下:

          /*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() 線性漸變,實(shí)現(xiàn)了一個(gè)漂亮的顏色漸變背景。還有一個(gè) CSS3 語(yǔ)法需要關(guān)注下:hue-rotate,色調(diào)旋轉(zhuǎn)濾鏡,方便我們改變當(dāng)前的顏色。

          四、使用CSS選擇器,實(shí)現(xiàn)表單面板的切換和隱藏

          我們通過(guò)點(diǎn)擊 checkbox 對(duì)應(yīng)的 label 標(biāo)簽進(jìn)行切換和顯示留言面板,這里我們用到了 :checked 偽類,以及 ~(后續(xù)同胞選擇器)和 +(緊鄰?fù)x擇器),輔助元素的選擇進(jìn)行樣式變換,示例代碼如下:

          [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;
          }
          

          這里有幾個(gè)樣式規(guī)則我們需要聊一下:

          1. translate(50%, calc((var(--form-width) + 100%) * -1)); 這個(gè)樣式是不是有些復(fù)雜,其實(shí)也不難,就是多加了一個(gè)表單面板的寬度,由于旋轉(zhuǎn)后,y軸變成了水平軸,向左移動(dòng)相當(dāng)Y軸往上移動(dòng),因此是負(fù)值,需要乘-1。
          2. 第二個(gè)選擇器,我們之所以加個(gè)選中后的 outline 輪廓屬性,主要是為了方便那些習(xí)慣鍵盤(pán)操作的用戶,當(dāng)其使用 Tab 鍵選擇 feedback label元素時(shí),然后再使用 Space 空格鍵就能很方便的打開(kāi)留言面板進(jìn)行切換。
          3. 第三個(gè)選擇器,我們使用 transform: translate(0, -50%); 將 X 軸更改成0,恢復(fù)成最開(kāi)始的位置,這樣我們的留言面板內(nèi)容就能顯示出來(lái)。

          處理響應(yīng)式問(wèn)題

          最后,特別重點(diǎn)提示下我們做頁(yè)面要考慮頁(yè)面響應(yīng)式適配的問(wèn)題,這里我們需要針對(duì)手機(jī)設(shè)備做一些樣式的調(diào)整,比如更改表單面板的寬度由原來(lái)的 500px 調(diào)整到 320px,以及初始字體的大小,調(diào)整成16px。

          最終添加的響應(yīng)式代碼如下:

          /*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));
            }
          }
          

          小節(jié)

          好了,到這里,我們的案例就全部完成了,你可以欣賞下自己完成的杰作啦,實(shí)現(xiàn)起來(lái)是不是很簡(jiǎn)單呢,最后我還是建議大家還是親自動(dòng)手實(shí)踐一遍,這樣才能加深對(duì)本案例用到的CSS屬性的理解。

          最終完成的效果,大家可以點(diǎn)擊以下網(wǎng)址進(jìn)行在線體驗(yàn):

          https://www.qianduandaren.com/demo/feedback/

          今天的內(nèi)容就和大家分享到這里,感謝你的閱讀,如果你喜歡我的分享,麻煩給個(gè)關(guān)注、點(diǎn)贊加轉(zhuǎn)發(fā)哦,你的支持,就是我分享的動(dòng)力,后續(xù)會(huì)持續(xù)分享 CSS 常用案例和技巧,歡迎持續(xù)關(guān)注。

          延伸閱讀

          基礎(chǔ)章節(jié):這30個(gè)CSS選擇器,你必須熟記(上)

          基礎(chǔ)章節(jié):這30個(gè)CSS選擇器,你必須熟記(中)

          基礎(chǔ)章節(jié):這30個(gè)CSS選擇器,你必須熟記(下)

          使用 CSS Checkbox Hack 技術(shù)制作一個(gè)手風(fēng)琴組件


          主站蜘蛛池模板: 亚洲Av高清一区二区三区| 无码视频一区二区三区在线观看| 无码少妇一区二区性色AV | 国产福利电影一区二区三区久久老子无码午夜伦不 | 亚洲欧美国产国产综合一区 | 国产精品一区二区久久| 日本不卡免费新一区二区三区| 免费观看日本污污ww网站一区| 无码中文人妻在线一区| 亚洲天堂一区二区三区四区| 亚洲AV综合色区无码一区爱AV| 一夲道无码人妻精品一区二区| 国产美女口爆吞精一区二区| 国产一区二区三区在线免费 | 免费看AV毛片一区二区三区| 91久久精品国产免费一区| 亚洲国产情侣一区二区三区| 亚洲一区在线免费观看| 亚洲av综合av一区| 一区国产传媒国产精品| 美女毛片一区二区三区四区| 国产成人精品无码一区二区老年人| 国产精品视频一区| 一夲道无码人妻精品一区二区| 国产内射999视频一区| 麻豆AV天堂一区二区香蕉| 国产电影一区二区| 中文字幕一区二区三区人妻少妇| 任你躁国语自产一区在| 国产精品福利一区二区久久| 中文字幕在线看视频一区二区三区| 无码免费一区二区三区免费播放| 日韩人妻精品一区二区三区视频| 91精品一区二区三区在线观看| 精品人妻AV一区二区三区| 国产成人欧美一区二区三区| 精彩视频一区二区| 日本一区二区三区高清| 精品国产一区二区三区色欲| 麻豆精品人妻一区二区三区蜜桃 | 一区五十路在线中出|