我一直在玩 CSS 很短的时间,并试图有一个普通的盒子,但左上角以 45 度角被切断。也不小;我正在看那个角度的一个相当大的切角。这个效果:
我应该怎么做?
Slantastic (http://meyerweb.com/eric/css/edge/slantastic/demo.html) supports old browsers. For CSS3-specific, try CSS polygons: http://alastairc.ac/2007/02/dissecting-css-polygons/.
The HTML:
<div class="cornered"></div>
<div class="main">Hello</div>
The CSS:
.cornered {
width: 160px;
height: 0px;
border-bottom: 40px solid red;
border-right: 40px solid white;
}
.main {
width: 200px;
height: 200px;
background-color: red;
}
The result: http://jsfiddle.net/mdQzH/
To use transparent borders and text in the border section... The HTML:
<div class="outer">
<div class="cornered">It's possible to put text up here, too
but if you want it to follow the slant you have to stack
several of these.</div>
<div class="main">Hello hello hello hello
hello hello hello hello hello</div>
</div>
The CSS:
.outer {
background-color: #ccffff;
padding: 10px;
font-size: x-small;
}
.cornered {
width: 176px;
height: 0px;
border-bottom: 40px solid red;
border-left: 40px solid transparent;
}
.main {
width: 200px;
height: 200px;
background-color: red;
padding: 0 8px;
}
The result: http://jsfiddle.net/76EUw/2
这可以使用 svg 来完成clip-path
。
优点:
下面的 CSS 将切割右下角的 div 形状,以便您可以放置任何背景:
-webkit-clip-path: polygon(100% 0, 100% 65%, 54% 100%, 0 100%, 0 0);
clip-path: polygon(100% 0, 100% 65%, 54% 100%, 0 100%, 0 0);
在线有多个 SVG 生成器:
支持:
CSS3linear-gradient()
可以绘制这个背景。
background: linear-gradient(to bottom right, transparent 50px, blue 50px);
body {
background: linear-gradient(red, orange) no-repeat;
min-height: 100vh;
margin: 0;
}
div {
background: linear-gradient(to bottom right, transparent 50px, blue 50px);
margin: 25px auto;
padding: 50px;
height: 200px;
width: 200px;
color: white;
}
<div>
Lorem ipsum dolor sit amet... Lorem ipsum dolor sit amet... Lorem ipsum dolor sit amet... Lorem ipsum dolor sit amet... Lorem ipsum dolor sit amet... Lorem ipsum dolor sit amet... Lorem ipsum dolor sit amet...
</div>
在不久的将来,您可以使用CSS 形状模块来实现这一点。
使用shape-inside
属性 - 我们可以使文本根据形状流动。
我们提供的形状可以是 inset()、circle()、ellipse() 或 polygon() 之一。
这目前可以在 webkit 浏览器中完成,但首先您必须执行以下操作:(来自Web 平台的说明)
要启用形状、区域和混合模式:
1) 将opera://flags/#enable-experimental-web-platform-features复制并粘贴到地址栏,然后回车。
2) 单击该部分中的“启用”链接。
3) 单击浏览器窗口底部的“立即重新启动”按钮。
看起来像这样:
<div class="shape">
Text here
</div>
.shape{
-webkit-shape-inside: polygon(65px 200px,65px 800px,350px 800px,350px 80px,160px 80px);
shape-inside: polygon(65px 200px,65px 450px,350px 450px,350px 80px,160px 80px);
text-align: justify;
}
构建多边形形状 - 我使用了这个网站
我已经设法只使用额外的跨度来做一些非常相似的事情,并且效果是通过 CSS 完成的。
jsFiddle来说明。
HTML
<div class="more-videos">
<a href=""><span class="text">More videos</span><span class="corner"></span></a>
</div>
CSS
`.more-videos {
padding: 20px;
}
.more-videos a {
text-decoration: none;
background-color: #7f7f7f;
position: relative;
padding: 10px 10px 5px 15px;
}
.more-videos a span {
font-size: 20px;
color: #ffffff;
}
.more-videos a span.text {
padding-right: 10px;
}
.more-videos a span.corner {
border-top: 15px solid #7f7f7f;
border-right: 15px solid #4d4c51;
border-bottom: none;
border-left: none;
bottom: 0px;
right: 0px;
position: absolute;
}
.more-videos a:hover span.corner {
border-right: 15px solid #999999;
}
我已经包含了从父级触发的悬停样式。'border-right: 15px solid #4d4c51;' color 是一种需要与父锚点背景颜色不同的颜色,以创建对角线/角度对比。
我想出了一个响应友好的 Ray Toal fiddle 解决方案:http: //jsfiddle.net/duk3/hCaXv/
html:
<div class="outer">
<div class="cornered">It's possible to put text up here, too
but if you want it to follow the slant you have to stack
several of these.</div>
<div class="main">Hello llo hello llo hello hello hello llo hello hello hello hello hello hello hello hello</div>
</div>
的CSS:
.outer {
background-color: #ccffff;
padding: 10px;
font-size: x-small;
}
.cornered {
width: 100%;
box-sizing:border-box;
height: 0px;
border-bottom: 2em solid red;
border-left: 2em solid transparent;
border-right: 2em solid transparent;
}
.main {
background-color: red;
padding: 0 2em;
}
希望能帮助到你 !