2014-11-05 56 views
1

我想在HTML创建此背景& CSS - 注:我不是要包含文本/标志“Joinnow”:在创建CSS和HTML背景只有

enter image description here

我已经在JSFiddle上得到了如此远的展示:http://jsfiddle.net/9uppsLqa/26/

底部部分很好,但我正在努力的顶部。出于某种原因,我得到:

  • 角度的边界,我需要直
  • 我不能增加顶部的高度。
  • 我不能用border-radis曲线顶部的角落
  • 颜色与主体顶部不匹配。

当前下面的代码:

<div class="object"></div> 


.object { 
    border-bottom-right-radius: .1875em; 
    border-bottom-left-radius: .1875em; 
    z-index: 99; 
    position: relative; 
    box-shadow: 0 0 0 1px rgba(0,0,0,0.15),inset 0 0 0 1px rgba(255,255,255,0.6), 0 4px 2px -2px rgba(0,0,0,0.2),0 0 1px 1px rgba(0,0,0,0.15); 
    background-repeat: repeat-x; 
    background-position: 0 0; 
    background-image: linear-gradient(to bottom,rgba(255,255,255,0.7) 0,rgba(255,255,255,0) 100%); 
    background-color: #e1e1e1; 
    margin-top: 3em; 
    margin-left: .75em; 
    margin-right: .75em; 
    padding-left: 0; 
    padding-bottom: 0; 
    padding-right: 0; 
    padding-top: 0; 
    width: 340px; 
    height: 160px; 
} 
.object:after, .object:before { 
    border: 13px solid transparent; 
    position: absolute; 
    content: ''; 
    left: 58%; 
    bottom:100%; 
    width: 140px; 
    height: 800px; 
    border-top-left-radius: .1875em; 
    border-top-right-radius: .1875em; 
} 

.object:after { 
    border-bottom-color: #fafafa; 
    border-width: 14px; 
    margin-left: -24px; 
    height: 60px; 
} 

.object:before { 
    border-bottom-color: #999; 
    border-width: 15px; 
    margin-left: -25px; 
    height: 60px; 
} 

三江源

回答

3

这里是仍然使用一个替代:之后,但代替设置伪元素,背景颜色,宽度和各元件的高度的边界被设置为实现类似的效果:前和。

CSS:

.object { 
    border-bottom-right-radius: .1875em; 
    border-bottom-left-radius: .1875em; 
    z-index: 99; 
    position: relative; 
    box-shadow: 0 0 0 1px rgba(0,0,0,0.15),inset 0 0 0 1px rgba(255,255,255,0.6), 0 4px 2px -2px rgba(0,0,0,0.2),0 0 1px 1px rgba(0,0,0,0.15); 
    background-repeat: repeat-x; 
    background-position: 0 0; 
    background-image: linear-gradient(to bottom,rgba(255,255,255,0.9) 0,rgba(255,255,255,0.2) 100%); 
    background-color: #e1e1e1; 
    margin-top: 3em; 
    margin-left: .75em; 
    margin-right: .75em; 
    padding-left: 0; 
    padding-bottom: 0; 
    padding-right: 0; 
    padding-top: 0; 
    width: 340px; 
    height: 160px; 
} 

.object:after, .object:before { 
    position: absolute; 
    content: ''; 
    left: 66%; 
    bottom: 100%; 
    border-top-left-radius: .1875em; 
    border-top-right-radius: .1875em; 
} 

.object:after { 
    background-color: #fafafa; 
    border-width: 14px; 
    margin-left: -24px; 
    width: 140px; 
    height: 15px; 
} 

.object:before { 
    background-color: #999; 
    border-width: 15px; 
    margin-left: -25px; 
    width: 142px; 
    height: 16px; 
} 

您可以通过每个伪元素上增加高度值增加顶部的高度。你只需要记住,就像现在一样,以前:在涉及到身高时,总是需要比以前多1px。

此外,线性渐变的alpha值已更改,以尝试使颜色渐变更平滑,甚至在顶部和底部之间。

例:http://jsfiddle.net/58rmrqd9/

2

这里:http://jsfiddle.net/9uppsLqa/28/

基本上你不应该需要之前和之后产生这种效果,实在没有必要在我看来。

.object { 
    border-bottom-right-radius: .1875em; 
    border-bottom-left-radius: .1875em; 
    z-index: 99; 
    position: relative; 
    box-shadow: 0 0 0 1px rgba(0,0,0,0.15),inset 0 0 0 1px rgba(255,255,255,0.6), 0 4px 2px -2px rgba(0,0,0,0.2),0 0 1px 1px rgba(0,0,0,0.15); 
    background-repeat: repeat-x; 
    background-position: 0 0; 
    background-image: linear-gradient(to bottom,rgba(255,255,255,0.7) 0,rgba(255,255,255,0) 100%); 
    background-color: #e1e1e1; 
    margin-top: 3em; 
    margin-left: .75em; 
    margin-right: .75em; 
    padding-left: 0; 
    padding-bottom: 0; 
    padding-right: 0; 
    padding-top: 0; 
    width: 340px; 
    height: 160px; 
} 
.object:after { 
    border: 13px solid transparent; 
    position: absolute; 
    content: ' '; 
    right: -1px; 
    bottom:100%; 
    width: 140px; 
    height: 800px; 
    border-top-left-radius: .1875em; 
    border-top-right-radius: .1875em; 
    border-color: #c4c4c4; 
    border-width: 1px; 
    border-bottom-style: none; 
    background-color: #fbfbfb; 
    height: 60px; 
    z-index: 1; 
} 
+0

我敢肯定,你可以根据自己的需要设置边框,半径,高度和宽度,我只是设置正确的定位和去除过多的定义。我还将':after'设置为从右侧开始,而不是从左侧开始,因为更改宽度或其他任何东西都会使其不一致。 – adrenalin 2014-11-05 21:59:42

+0

另请注意,我使用明确的十六进制颜色值为边框(和使用边框,而不是框阴影,因为它只有1px的宽度)。由于它是嵌入式的,因此无论如何我都没有真正看到使用盒子阴影的意义,因为在这里定义了100%的不透明背景色。考虑到顶部没有任何渐变。 – adrenalin 2014-11-05 22:09:35

+0

是的,然后你可以设计JoinNow文本的样式:http://jsfiddle.net/9uppsLqa/29/ – 2014-11-05 22:56:15