WebKit边框半径与CSS3的translate3D结合会出现溢出问题。

9

我在Webkit浏览器上遇到一个问题,如果我给一个div添加border-radius,并且在里面应用-moz-translate3d到ul(这是因为在原始的flexslider幻灯片示例中使用),那么border-radius不会应用并且会渗透到容器中。

为了清楚地理解我的意思,这里有一个关于这个问题的fiddle示例。如果我删除translate3d属性,border-radius就被应用了。

HTML:

<div class="wrapper">
    <ul>
        <li>
            <div class="caption"><p>Test</p></div>
        </li>
        <li>
            <div class="caption"><p>Test</p></div>
        </li>
        <li>
            <div class="caption"><p>Test</p></div>
        </li>
        <li>
            <div class="caption"><p>Test</p></div>
        </li>
    </ul>
</div>

CSS(层叠样式表):
.wrapper {
    border-radius: 20px;
    position: relative;
    width: 500px;
    height: 200px;
    overflow: hidden;
}

.caption {
    position: absolute;
    bottom: 0;
    left: 0;
    background-color: rgba(0,0,0,0.8);
    padding: 2rem;
    -webkit-box-sizing: border-box;
    width: 100%;
    height: 3rem;
    color: #fff;
}

ul {
    width: 800%;
    -webkit-transform: translate3d(-500px, 0, 0); 
}

li {
    float: left;
    width: 500px;
    height: 200px;
    background-color: #000;
    position: relative;
}

.caption p {
    color: #fff;
}

http://jsfiddle.net/R5L3K/12/

我已经在Mac和Windows上的最新版Chrome浏览器上测试过了。

提前感谢您!


看起来规则产生了冲突。你想要达到什么样的最终结果? - AlienWebguy
我只需要使用translate3d属性将边框变圆 :) - Ariel
我明白你的问题,但是为什么你需要那个属性呢?看起来你只是在移动UL - 为什么不直接使用“position:relative; left: -500px;”? - AlienWebguy
因为实际上不在我的控制范围内,我正在使用flexslider插件来使用此属性使幻灯片与CSS3一起工作,并且仅在Webkit浏览器上无法正常工作。 - Ariel
2个回答

23

你知道吗,这很奇怪。我之前确实看到了那个问题并尝试过,但是没有成功。现在它可以了,谢谢! - Ariel
我不知道它是如何工作的,但它确实可以。这是一个不错的晚间探索任务。 - Aleksandr Zonov

1

止血了,太好了!我正在使用这个盒子,在它上面添加一个箭头,使用的是:before。然而,这似乎会神奇地使得:before标签中的箭头消失。有没有什么办法可以解决这个问题?

span {
position: relative;
border-radius: 5px;
-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC);
}

span:before {
content: '';
width: 0;
height: 0;
top: 29px;
right: 100%;
visibility: hidden;
position: absolute;
border-width: 9px; /* 0.8em */
border-style: solid;
border-color: transparent rgba(000,000,000,0.85) transparent transparent;
}

你能够总结一下你所改变的内容吗? - gcbenison
我想我找到了问题所在,只是不知道如何解决它。由于箭头位于框外,它消失了。这就像使用overflow: hidden一样。 - Sebastian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接