iPhone瀏覽器 border-radius 失效


起因:想實現下面這樣的效果的。

思路:

父div圓角,超出隱藏。

子div文字變色,箭頭變色延遲 0.25s 。

父元素添加偽類,優化背景過度效果。

代碼:

html

<div class="index-button">
    <a href="javascript:;">
        <h2>REQUEST A QUOTE!</h2>
        <span>
            <i class="fas fa-angle-right" aria-hidden="true"></i>
        </span>
    </a>
</div>

css

.index-button{
        border-radius: 30px;
    border: solid 2px #555559;
    font-size: 18px;
    font-weight: bold;
    font-stretch: normal;
        width: 100%;
        max-width: 300px;
        overflow: hidden;
        position: relative;
        padding: 15px 0 17px;
    
       /*-webkit-backface-visibility: hidden;
       -moz-backface-visibility: hidden;
       -webkit-transform: translate3d(0, 0, 0);
       -moz-transform: translate3d(0, 0, 0); 改進*/
}
.index-button h2{
    background-color: inherit;
    color: #545559;
    letter-spacing: .7px;
    font-size: 18px;
    margin: 0;
    padding: 0;
    padding-left: 27px;
}
.index-button:hover{
    border: solid 2px #fea400;
}
.index-button:hover h2{
    color: #fff;
}
.index-button span{
    position: absolute;
    height: 100%;
    width: 59px;
    top:0;
    right: -3px;
    border-radius: 50%;
    background-color: #555559;
    color: #fff;
    text-align: center;
    line-height: 53px;
    transition: all .5s .25s;
}

.index-button:hover span{
    color:#fea400;
    background-color: #fff;

}

.index-button:before,
.index-button:after {
    content: '';
    position: absolute;
    z-index: -1;
    left: 100%;
    top: 0;
    width: 100%;
    height: 100%;
    background: #fea400;
    transition: all .5s;
    -webkit-transform: skew(30deg) translate3d(0, 0, 0);
    -moz-transform: skew(30deg) translate3d(0, 0, 0);
    -ms-transform: skew(30deg) translate3d(0, 0, 0);
    -o-transform: skew(30deg) translate3d(0, 0, 0);
    -webkit-transform-origin: 0 0;
    -ms-transform-origin: 0 0;
    transform-origin: 0 0;
    opacity: 0;
    -moz-opacity: 0;
    filter: alpha(opacity=0);
}
.index-button:before {
    left: auto;
    right: 100%;
    -webkit-transform: skew(-30deg) translate3d(0, 0, 0);
    -moz-transform: skew(-30deg) translate3d(0, 0, 0);
    -ms-transform: skew(-30deg) translate3d(0, 0, 0);
    -o-transform: skew(-30deg) translate3d(0, 0, 0);
}
.index-button:hover:before {
    -webkit-transform: skew(-30deg) translate3d(70%, 0, 0);
    -moz-transform: skew(-30deg) translate3d(70%, 0, 0);
    -ms-transform: skew(-30deg) translate3d(70%, 0, 0);
    -o-transform: skew(-30deg) translate3d(70%, 0, 0);
    opacity: 1;
    -moz-opacity: 1;
    filter: alpha(opacity=100);
}
.index-button:hover:after {
    -webkit-transform: skew(30deg) translate3d(-70%, 0, 0);
    -moz-transform: skew(30deg) translate3d(-70%, 0, 0);
    -ms-transform: skew(30deg) translate3d(-70%, 0, 0);
    -o-transform: skew(30deg) translate3d(-70%, 0, 0);
    opacity: 1;
    -moz-opacity: 1;
    filter: alpha(opacity=100);
}
View Code

問題:

在谷歌,360等瀏覽器上面測試都沒問題。但是在iphone上面測試,發現父元素本身的圓角屬性是在的,但是鼠標hover上去后發現,如下效果:

 

雖然設置了 overflow: hidden屬性,但是偽元素只把div之外的隱藏掉了,圓角屬性並沒有得到。

解決:

搜了問題之后,發現是因為transform動畫,導致的safari顯示出問題,給到的解決辦法是:

給父元素(偽類遮罩父級)加上一些屬性

.index-button{

-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);

}

backface-visibility:hidden; 表示元素翻轉后消失,我也不知道為什么要寫這樣 ,不過只要解決了就OK。 :)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM