2013-02-26 106 views
3

我试图玩弄的CSS边界,但无法弄清楚如何实现以下“四四方方”的样子:是否可以用css实现斜边?

enter image description here

这可能吗?如果是这样(不要使用深色背景,因为它是在那里添加对比度)

+0

我在想:以后也是这样,但是rotate3D mhmm我真的不想使用它,因为跨浏览器问题 – Ilja 2013-02-26 21:23:57

+0

或者''after'后面的这个技巧:http://css-tricks.com/ snippets/css/css-triangle/ – 2013-02-26 21:24:25

+0

有趣的是,我会尝试和这个想法一起玩 – Ilja 2013-02-26 21:25:40

回答

3

这是可能的 - 使用:after和一些额外的CSS技巧与边界。

http://jsfiddle.net/EaZ8r/3/

CSS

body { 
    background: #000; 
} 

#box { 
    height: 150px; 
    width: 200px; 
    background: #fff; 
    margin: 0 auto; 
    position: relative; 
} 

#box:after { 
    display: block; 
    background: blue; 
    width: 180px; 
    height: 0px; 
    border: 10px #000 solid; 
    border-top: 15px #eee solid; 
    content: ""; 
    position: absolute; 
    bottom: 0px; 
} 

它是如何工作的?

这里最主要的是很好的理解border如何被浏览器淹没。看看这个例子:http://jsfiddle.net/n2nsB/。当两个边界彼此相遇时,画布会在它们之间分裂,导致某种三角形淹没在那里。这是非常有用的,因为两件事情:

  1. 首先,border-width可以单独为所有4个边框设置,所以你可以改变分割的角度!检查例子:http://jsfiddle.net/n2nsB/1/
  2. 第二,但更重要的是:你可以设置border-color等于background使其无形!例如:http://jsfiddle.net/n2nsB/2/
  3. 甚至可以设置边框,当元素没有高度时,边框只能是该元素被淹没的东西。例如:http://jsfiddle.net/n2nsB/3/

另一方面,你也应该知道如何:after伪元素的作品。你可以在网上找到很多有关这方面的很好的教程。我建议这一开始:http://coding.smashingmagazine.com/2011/07/13/learning-to-use-the-before-and-after-pseudo-elements-in-css/

所以只要结合所有的东西,并得到你想要的。

+0

嘿,感谢它的工作!但是我完全不知道它是如何实现的,你能否以更深入的方式解释它? – Ilja 2013-02-26 21:42:48

+1

我已经更新了我的答案。希望它帮助更多。 – MarcinJuraszek 2013-02-26 21:58:04

相关问题