繁体   English   中英

半透明倾斜的背景

[英]Semi-transparent slanted background

我想创建一个html元素,例如div,其格式如下:

  • 半透明背景色
  • 所有边缘都有圆角边框
  • div的左侧画一条直线
  • div的右侧绘制了一条偏斜的线条

我想在CSS中创建它,并想知道这是否可行。 到目前为止,我提出了两种不同的方法,这些方法有其自身的缺点并且还不够充分。 你可以看看这个小提琴中的那些:

https://jsfiddle.net/n4tecna3/

 .one-side-skew-1, .one-side-skew-2 { font-size: 20px; padding: 2%; background-color: rgba(220, 50, 255, 0.6); position: relative; display: block; border-radius: 4px; z-index: 2; color: #ffffff; margin-top: 30px; } .one-side-skew-2 { border-top-right-radius: 0px; } .one-side-skew-1:after { height: 100%; width: 20%; position: absolute; top: 0; left: 85%; display: inline-block; content: ""; background-color: rgba(220, 50, 255, 0.6); -moz-transform: skewX(-10deg); -webkit-transform: skewX(-10deg); -ms-transform: skewX(-10deg); -o-transform: skewX(-10deg); transform: skewX(-10deg); z-index: -1; border-radius: 4px; } .one-side-skew-2:after { border-top: 1em solid rgba(220, 50, 255, 0.6); border-left: 0.25em solid rgba(220, 50, 255, 0.6); border-right: 0.25em solid transparent; border-bottom: 1em solid transparent; border-top-right-radius: 4px; left: 100%; display: inline-block; position: absolute; content: ""; top: 0; } .container { width: 500px; } 
 <div class="container"> <div class="one-side-skew-1"> <span class="inner-text">One Side Skew With Pseudo Element Skewed</span> </div> <div class="one-side-skew-2"> <span class="inner-text">One Side Skew With Pseudo Element Border</span> </div> </div> 

方法1 .one-side-skew-1使用带有圆形边框的div元素和一个倾斜的圆形边界伪元素来创建一个单侧倾斜元素。 只要背景颜色是实心的,这就很有效。 对于半透明背景,您将看到元素及其伪元素相遇的难看的颜色重叠。

方法2 .one-side-skew2使用div元素,其后面有一个伪,仅由边框组成。 这有点hacky但接近我想要的结果。 尽管如此,权利看起来并不像第一种方法那样顺畅。

其他人是否只在CSS中解决了这个问题? 或者我是否必须使用具有半透明背景图像的后备解决方案来解决这个问题?

您可以对所有背景使用伪元素,并使用元素上的overflow属性隐藏溢出部分。

这将防止元素和伪元素背景重叠并允许半透明背景:

div偏向一侧和半透明背景

 div { position: relative; width: 250px; font-size: 20px; border-radius: 4px; overflow: hidden; color: #fff; padding: 1% 2%; } div:before { content: ''; position: absolute; top: 0; right: 0; width: 100%; height: 100%; background: rgba(220, 50, 255, 0.6); -webkit-transform-origin:100% 0; -ms-transform-origin:100% 0; transform-origin: 100% 0; -webkit-transform: skewX(-10deg); -ms-transform: skewX(-10deg); transform: skewX(-10deg); border-radius: 4px 4px 6px; z-index: -1; } /** FOR THE DEMO **/body {background: url('http://lorempixel.com/output/people-qg-640-480-3.jpg');background-size: cover;} 
 <div>content</div> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM