2016-08-04 75 views
-1

創建下列形狀的最佳方法是什麼? enter image description hereCSS/HTML複雜形狀

+0

一個常規的DIV,和另一個在它之上的邊界半徑? –

+3

在我看來,你已經完成了一項偉大的工作......噢,你的意思是在代碼中?你有嘗試過什麼嗎? –

+0

您的圖像是否代表三個單獨的文本列? – Rounin

回答

1

您可以進行以下檢查codepen

<div class="bar"> 
    <div class="left"> 
     left Text 
    </div> 

<div class="cirlce"> 
    Circle 
    </div> 

<div class="right"> 
    Right Text 
</div> 
</div> 

CSS

.bar{ 
    margin-top:40px; 
    width:100%; 
    background:#ddd; 
    height:80px; 
    position:relative; 
text-align:center; 
} 

.cirlce{ 
    width:140px; 
    height:140px; 
    background:#ccc; 
    margin:0 auto; 
    position:absolute; 
    top:-30px; 
    left:0; 
    right:0; 
    border-radius:50% 
} 

.left{ 
    left:0; 
    position: absolute; 
} 

.right{ 
    right:0; 
    position: absolute; 
} 

http://codepen.io/sajiddesigner/pen/NAORAv

+0

謝謝@OptimumCreative,我已經稍微修改了你的版本以達到我的需要[codepen](http://codepen.io/supertrall/pen/NAOaBV) – Sergey

+0

很高興我幫了一個人。我也很高興看到你的進步。祝你好運 –

7

你可以用一個元素和:before:after僞元素來做到這一點。

.el { 
 
    position: relative; 
 
    display: inline-block; 
 
    text-align: center; 
 
    line-height: 100px; 
 
    background: #89C3EE; 
 
    margin: 50px 150px; 
 
    width: 100px; 
 
    height: 100px; 
 
    border: 3px solid #6295DC; 
 
    border-radius: 50%; 
 
} 
 
.el:before, 
 
.el:after { 
 
    content: 'Text'; 
 
    position: absolute; 
 
    height: 50px; 
 
    line-height: 50px; 
 
    width: 100px; 
 
    top: 50%; 
 
    transform: translateY(-50%); 
 
    background: #89C3EE; 
 
    border-top: 3px solid #6295DC; 
 
    border-bottom: 3px solid #6295DC; 
 
} 
 
.el:before { 
 
    width: 150px; 
 
    left: -143px; 
 
} 
 
.el:after { 
 
    right: -94px; 
 
}
<div class="el">Text</div>

1

一種方法是有3個獨立的divs並給中間的一個border-radius

正如您從下面的代碼片段中看到的,這將使您能夠在每列中包含多個段落(如果您需要它們)。

例子:

div { 
 
position: relative; 
 
display: inline-block; 
 
width: 29vw; 
 
padding: 2vw 1vw; 
 
color: rgb(255,255,255); 
 
font-size: 1vw; 
 
background-color: rgb(255,0,0); 
 
vertical-align: middle; 
 
} 
 

 
div p { 
 
position: relative; 
 
z-index: 12; 
 
width: 22vw; 
 
margin: 1vw auto; 
 
} 
 

 
div:nth-of-type(2) { 
 
left: -7.5vw; 
 
height: 26vw; 
 
padding-top: 4vw; 
 
text-align: center; 
 
border-radius: 50%; 
 
} 
 

 
div:nth-of-type(2) p { 
 
width: 15vw; 
 
} 
 

 
div:nth-of-type(3) { 
 
left: -15vw; 
 
text-align: right; 
 
}
<div> 
 
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p> 
 
<p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> 
 
</div> 
 

 
<div> 
 
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p> 
 
<p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> 
 
</div> 
 

 
<div> 
 
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p> 
 
<p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> 
 
</div>