<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          能讓你受益匪淺的10個css使用技巧

          共 541字,需瀏覽 2分鐘

           ·

          2020-01-14 23:28

          4cc6b1a8a8535bc69ba634d4287bb5f7.webp

          點擊上方藍(lán)色字體,關(guān)注我啦~~

          ◆◆CSS技巧大雜燴
          ◆◆
          01?Safari 中z-index的層級問題


          在Safari瀏覽器下(此Safari瀏覽器包括iOS的Safari,iPhone上的微信瀏覽器,以及Mac OS X系統(tǒng)的Safari瀏覽器),當(dāng)我們使用3D transform變換的時候,如果祖先元素沒有overflow:hidden/scroll/auto等限制,則會直接忽略自身和其他元素的z-index層疊順序設(shè)置,而直接使用真實世界的3D視角進(jìn)行渲染。例如下面的場景,圖中紅框里面的模塊,使用 3D transform變換,進(jìn)行旋轉(zhuǎn)動畫,但是在Safari瀏覽器下,忽略了二維碼遮罩層的z-index,結(jié)果使用了真實世界的3D視角進(jìn)行渲染。出現(xiàn)了重疊的bug:

          7224860e816869cd0d30931e22b9552e.webp

          解決方法:

          1. 父級,任意父級,非body級別,設(shè)置overflow:hidden可恢復(fù)和其他瀏覽器一樣的渲染。
          2. 以毒攻毒。有時候,頁面復(fù)雜,我們不能給父級設(shè)置overflow:hidden,那么可以將被影響的元素設(shè)置一個足夠大的translateZ值就可以,如translateZ(100px)。
          02文字居中兼容


          正常處理文字上下居中的手段是讓元素height和line-height相等,但是安卓環(huán)境下當(dāng)字體大小<14px/0.7rem的時候會出現(xiàn)居中失效的情況。

          解決方法:

          1. 判斷系統(tǒng)環(huán)境(安卓/IOS)分別作微調(diào);

          2. font-size、height、width全部放大為2倍,利用transform進(jìn)行縮放

          height: 1rem;
          width: 2rem;
          font-size: 0.5rem;

          變成:
          height: 2rem;
          width: 4rem;
          font-size: 1rem;
          transform: scale(0.5);

          但由于放大之后占據(jù)空間,左右會留白,需要利用margin負(fù)值 margin: -0.35rem -0.45rem 0;調(diào)整

          1. 有解決方案是將rem改為px。
          032個a標(biāo)簽做90度旋轉(zhuǎn)bug


          定義了一個動畫效果如下(sass代碼):

          @keyframes official-featured_rotate {
          10%,50%{
          transform:rotateY(90deg);
          }
          60%,100%{
          transform:rotateY(0deg);
          }
          }
          &-rotate {
          position: absolute;
          width: rem(350/2);
          height: rem(160/2);
          transform-style:preserve-3d;
          transform:translate3d(0,0,0);
          &.ani_rotate {
          animation:official-featured_rotate 5s linear 0s infinite;
          animation-delay: 2s;
          }
          &__item {
          width: rem(350/2);
          height: rem(160/2);
          position: absolute;
          &:nth-child(1) {
          transform: translateZ(rem(350/4));
          }
          &:nth-child(2) {
          transform: rotateY(90deg) translate3d(0,0,rem(350/4));
          }
          }
          }

          這里是2個a標(biāo)簽,做90度的旋轉(zhuǎn)效果使得兩個a可以循環(huán)切換展示。這里2個的基本樣式是一致的,寬高也一樣。但是在安卓下(ios正常)只有打開頁面能看到的第一個a標(biāo)簽?zāi)苷LD(zhuǎn),能正常綁定事件。第二個a不能跳轉(zhuǎn),我就想那我通過點擊事件來跳轉(zhuǎn)可以不,結(jié)果綁定任何事件都不生效。

          解決方法:

          然后測試發(fā)現(xiàn),在旋轉(zhuǎn)過程中(只要未完全旋轉(zhuǎn)90度)點擊還是能一切正常的。于是把旋轉(zhuǎn)角度改為了89.99度,一切正常。動畫效果修改為:

          @keyframes official-featured_rotate {
          10%,50%{ ?
          ? ? ?transform:rotateY(-89.99deg); ?
          ? ?}
          ? ?60%,100%{ ?
          ? ? ?transform:rotateY(0deg); ?
          ? ?} ?
          }

          后來查找了一下stackoverflow(https://stackoverflow.com/questions/23548612/cant-click-on-buttons-after-css-transform)。里面也是說了這個解決方法。

          04使用currentColor來簡化css


          設(shè)置border-color、background-color等顏色的時候,可以使用currentColor[與當(dāng)前元素的字體顏色相同]來簡化css。

          .div{
          color: rgba(0,0,0,.85);
          font-weight: 500;
          text-align: left;
          padding: 20px;
          border: solid 1px currentColor;
          }

          05灰色濾鏡做樣式的disable


          灰色圖可以直接加濾鏡,不用切多一張圖。如圖:

          b39a9b89f4599713d1c2571f61221faa.webp解決方法:

          .coupon_style .disable {
          -webkit-filter: grayscale(1);
          }
          06?曲線陰影的實現(xiàn)


          • 多個陰影重疊,就是正常陰影+曲線陰影
          • 正常情況下,有個矩形有正常的陰影,作為主投影,這時候再定義一個有一定弧度圓角的圓角矩形,然后放在正常矩形的下面,并露出一點點底部有弧度的陰影,這樣的話就可以形成曲線投影的效果。

          效果:

          8285d8a08d61870be11a878799dc7a6f.webp

          代碼:

          9ce696ce50f164e3335d5e7568ea3791.webp

          07翹邊陰影的實現(xiàn)


          利用:before和:after,加上絕對定位的性質(zhì),可以形成一個矩形,這個時候結(jié)合CSS3的傾斜屬性skew和旋轉(zhuǎn)屬性rote。就可以形成一個有旋轉(zhuǎn)角度的平行四邊形,這個時候再和原來的矩形重疊,則可產(chǎn)生翹邊效果。

          效果:

          f0864fbb518ebeeeb16e049b986bc476.webp

          代碼:

          e608e281fb8eff65e2354c0c872b6b32.webp

          d5674b0eb0fe31c1510508a7adbcc558.webp

          01098e9c86350a7391de103c4be2a96b.webp

          08用-webkit-mask實現(xiàn)蒙版

          效果圖:

          dc0db01e7ac90582274da32213592828.webp

          代碼:


          background: url("images/logo.png") no-repeat;-webkit-mask : url("images/mask.png");

          mask.png中黑色代表是不透明的(alpha:1),其他部分為透明的(alpha:0),將它蓋在背景圖上,注意:背景圖對應(yīng)mask.png中透明的位置也會變成透明,留下非透明的形狀,即背景圖的可見形狀與mask.png的可見形狀相同,即為"蒙版"。

          09圖片自適應(yīng)占位方式


          當(dāng)圖片未正確加載,或加載完成前,由于圖片高度為0,其容器會因為沒有內(nèi)容,導(dǎo)致容器無法撐高而塌陷,而如果加載較慢則會在圖片加載完成后出現(xiàn)閃爍的情況。

          css中,當(dāng)padding-top/bottom值為百分比時,其值都是以其父元素的寬度為參照對象。因此對于寬高比例固定的情況,可以利用padding-top/bottom用于圖片自適應(yīng)占位,解決頁面閃爍的問題。

          如果僅設(shè)置值padding-top/bottom為百分比,會出現(xiàn)一個問題,就是該方法容器的max-height屬性會失效,就無法限制容器的最大高度了。

          因此,可以給容器添加一個偽元素的子元素用于撐起內(nèi)容,該子元素?fù)碛幸粋€padding-top:100%,同時給容器一個max-height嘗試限制容器的高度,最后內(nèi)容用絕對定位的方式添加即可。如:

          #container{
          width: 50%;
          max-height:300px;
          background-color:#ddd;
          /*由于margin存在塌陷的問題,需要通過構(gòu)建BFC來保證容器不會受到影響,因此這里可以給容器一個overflow:hidden來保證偽元素的margin不會塌陷。*/
          overflow:hidden;
          position: relative; /* 父容器相對定位 */
          }
          .placeholder::after{
          content:"";
          display:block;
          margin-top:100%;
          }
          img{
          position:absolute; /* 內(nèi)容絕對定位 */
          left: 50%;
          top: 50%;
          transform: translateX(-50%) translateY(-50%); /* 控制內(nèi)容絕對定位位置 */
          width:80%; /* 控制圖片不溢出,因此這里使用的圖片實際寬度受父容器影響 */
          }

          但是對于寬高比例不定的圖片來說,這樣做可能導(dǎo)致圖片顯示不全,使用時要注意。


          10頁面自適應(yīng)最佳實踐


          經(jīng)過大型項目實踐,下面這段CSS是最好的基于rem和vm和calc實踐代碼:

          html {
          font-size: 16px;
          }
          @media screen and (min-width: 375px) {
          html {
          /* iPhone6的375px尺寸作為16px基準(zhǔn),414px正好18px大小, 600 20px */
          font-size: calc(100% + 2 * (100vw - 375px) / 39);
          font-size: calc(16px + 2 * (100vw - 375px) / 39);
          }
          }
          @media screen and (min-width: 414px) {
          html {
          /* 414px-1000px每100像素寬字體增加1px(18px-22px) */
          font-size: calc(112.5% + 4 * (100vw - 414px) / 586);
          font-size: calc(18px + 4 * (100vw - 414px) / 586);
          }
          }
          @media screen and (min-width: 600px) {
          html {
          /* 600px-1000px每100像素寬字體增加1px(20px-24px) */
          font-size: calc(125% + 4 * (100vw - 600px) / 400);
          font-size: calc(20px + 4 * (100vw - 600px) / 400);
          }
          }
          @media screen and (min-width: 1000px) {
          html {
          /* 1000px往后是每100像素0.5px增加 */
          font-size: calc(137.5% + 6 * (100vw - 1000px) / 1000);
          font-size: calc(22px + 6 * (100vw - 1000px) / 1000);
          }
          }


          推薦閱讀




          我的公眾號能帶來什么價值?(文末有送書規(guī)則,一定要看)

          每個前端工程師都應(yīng)該了解的圖片知識(長文建議收藏)

          為什么現(xiàn)在面試總是面試造火箭?

          04068ac91dc0f25a9a9f1f8602f62421.webp
          瀏覽 26
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  h网站免费观看 | 无码精品人妻 | 日本一区三区祀频在线观看 | 4438AV | 午夜精品久久久 |