我设法达到这种效果: http://jsfiddle.net/6z3msdwf/1/但我不与标记真的很高兴。 此外,还有在IE 10/11的怪异的臭虫当你调整窗口大小显示1px的差距。
是否有任何其他方式做到这一点? 或者,也许解决这个问题一个在IE中。
编辑圈子不得使用边界,它应该是透明的。
body, html { font-size: 18px; } body { background-color: #fff } .avatar { width: 90px; height: 90px; position: absolute; background-color: red; top: -115px; left: 5px; border-radius: 80px; } .wrap { display: block; margin: 100px auto 0 auto; width: 90%; position: relative; } .rect-left, .rect-right { position: relative; width: 50%; height: 150px; float: left; } .rect-left { margin-left: -50px; } .rect-right { margin-right: -50px; } .inner { position: absolute; top: 0; left: 50px; right: 0; bottom: 0; height: 100%; background: rgba(0, 0, 0, 0.8); } .rect-left .inner { left: 50px; right: 0; -webkit-border-top-left-radius: 6px; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-topleft: 6px; -moz-border-radius-bottomleft: 6px; border-top-left-radius: 6px; border-bottom-left-radius: 6px; } .rect-right .inner { left: 0; right: 50px; -webkit-border-top-right-radius: 6px; -webkit-border-bottom-right-radius: 6px; -moz-border-radius-topright: 6px; -moz-border-radius-bottomright: 6px; border-top-right-radius: 6px; border-bottom-right-radius: 6px; } .rect { float: left; height: 100px; width: 100px; background: rgba(0, 0, 0, 0.8); position: relative; top: 50px; } .circle { display: block; width: 100px; height: 50px; top: -50px; left: 0; overflow: hidden; position: absolute; } .circle:after { content: ''; width: 100px; height: 100px; -moz-border-radius: 100px; -webkit-border-radius: 100px; border-radius: 100px; background: rgba(0, 0, 0, 0); position: absolute; top: -110px; left: -40px; border: 40px solid rgba(0, 0, 0, 0.8); }
<div class="wrap"> <div class="rect-left"> <div class="inner"></div> </div> <div class="rect"> <span class="circle"></span> <div class="avatar"></div> </div> <div class="rect-right"> <div class="inner"></div> </div> </div>