2016-07-03 7 views
1

Я пытаюсь вычислить элемент, а затем добавить в него свойство background-image. Я смотрел на этот вопрос - Is there a way to curve an element?. Единственное различие заключается в том, что я хочу, чтобы он был изогнутым снаружи.Способ кривого (за пределами) элемента в CSS3

Вот пример:

Example of curved-outside image

Это то, что я пытался сделать: http://jsfiddle.net/KcmfC/1148/

Проблема в этом результате, что это слишком много изогнут. Я не могу найти решение для этого.

#test { 
 
    background: url('http://www.planwallpaper.com/static/images/i-should-buy-a-boat.jpg') repeat center center/cover; 
 
    border: 0px solid #000; 
 
    width: 100%; 
 
    min-height: 15em; 
 
    border-radius: 0 0 100% 100%; 
 
}
<div id="test"></div>

ответ

2

То, что я сделал это немного сложнее, я протягивал width до 140%, а я «вырезать» края через overflow: hidden. Вот мой полный пример:

#test { 
 
    position: relative; 
 
    overflow: hidden; 
 
    min-height: 150px; 
 
} 
 
#test:before { 
 
    background: url('http://www.planwallpaper.com/static/images/i-should-buy-a-boat.jpg') repeat center center/1048px 319px; 
 
    border: 0px solid #000; 
 
    content: ""; 
 
    width: 140%; 
 
     height: 100%; 
 
    border-radius: 0 0 100% 100%; 
 
    position: absolute; 
 
    z-index: -1; 
 
    left: -20%; 
 
    right: -20%; 
 
}
<div id="test"> 
 
    <div> 
 
SOME TEXT SOME TEXT SOME 
 
    </div> 
 
</div>

0

reduice в border radius pourentage

body{ 
 
    margin:0 
 
    } 
 

 
#test { 
 
    background: url('http://www.planwallpaper.com/static/images/i-should-buy-a-boat.jpg') repeat center center/cover; 
 
    border: 0px solid #000; 
 
    width: 100%; 
 
    min-height: 15em; 
 
    border-radius: 0 0 35% 35%; 
 
}
<div id="test"> 
 
</div>

+0

Это все еще слишком много радиуса. Мне действительно нужно немного, как пример изображения, который я дал. –

0

Что об этом?

#test { 
 
    background: url('http://www.planwallpaper.com/static/images/i-should-buy-a-boat.jpg') repeat center center/cover; 
 
    border: 0px solid #000; 
 
    width: 100%; 
 
    min-height: 15em; 
 
    border-radius: 0 0 70% 70%/20%; 
 
}
<div id="test"></div>

+0

Я не думал об этом, но ваше решение немного проблематично для моего вопроса. как вы можете видеть по краям, Это выглядит не так, как хотелось. –

1

Вы можете использовать псевдо-элемент

div { 
 
    background: gray url(http://www.planwallpaper.com/static/images/i-should-buy-a-boat.jpg) no-repeat center bottom -25px/cover; 
 
    height: 180px; 
 
    position: relative;  
 
} 
 
div:after { 
 
    content: ''; 
 
    background: gray url(http://www.planwallpaper.com/static/images/i-should-buy-a-boat.jpg) no-repeat center bottom/cover; 
 
    border-radius: 50%; 
 
    width: 100%; 
 
    height: 50px; 
 
    top: calc(100% - 25px); 
 
    left:0; 
 
    position: absolute; 
 
}
<div></div>

+0

Мне не понравилась идея загрузить одно и то же изображение дважды, а углы не похожи на то, что я пытался сделать –

+0

@EliyaCohen Угол изображения можно легко отрезать, установив ширину псевдошины немного больше ... и вы не загружаете изображение дважды, оно находится в кеше и используется повторно. – LGSon

+0

Да, я знаю, что могу это сделать, посмотрите на мой ответ. Можете ли вы дать отзыв? Я буду счастлив :) –