Скругление границ между блоками

194
31 мая 2018, 01:00

Помогите реализовать скругление как на картинке:

Answer 1

Первый вариант:
С помощью псевдоэлементов.

* { 
  margin: 0; 
  padding: 0; 
} 
 
body { 
  display: flex; 
  justify-content: center; 
  align-items: center; 
} 
 
.block { 
  position: relative; 
  margin: 4rem; 
  width: 200px; 
  height: 100px; 
  background-color: dodgerblue; 
  border-top-left-radius: 1rem; 
  border-top-right-radius: 1rem; 
} 
 
.block::before, 
.block::after { 
  content: ''; 
  position: absolute; 
  width: 20px; 
  height: 20px; 
  background-color: dodgerblue; 
  border-radius: 50%; 
  z-index: 1; 
} 
 
.block::before { 
  left: 43px; 
} 
 
.block::after { 
  right: 43px; 
} 
 
.circle { 
  position: absolute; 
  top: -37.5px; 
  left: 50%; 
  width: 75px; 
  height: 75px; 
  border-radius: 50%; 
  background-color: white; 
  transform: translateX(-50%); 
} 
 
.circle::before, 
.circle::after { 
  content: ""; 
  position: absolute; 
  background-color: white; 
  width: 20px; 
  height: 20px; 
  transform: rotate(45deg); 
} 
 
.circle::before { 
  left: -5px; 
  top: 25px; 
} 
 
.circle::after { 
  right: -5px; 
  top: 25px; 
}
<div class="block"> 
  <div class="circle"></div> 
</div>

Второй вариант:
Обошлось почти без псевдоэлементов. Суть такова, нужно создать 3 куба, сделать им закругление по верхним краям, средний блок опустить в самый низ, сделать по высоте меньше, чем остальные и добавить ему псевдоэлемент, в нашем случае это круг.

* { 
  margin: 0; 
  padding: 0; 
} 
 
body { 
  display: flex; 
  justify-content: center; 
  align-items: center; 
} 
 
.wrapper { 
  margin: 2rem; 
  display: flex; 
} 
 
.block { 
  background-color: dodgerblue; 
  width: 75px; 
  height: 65px; 
  border-top-left-radius: 1rem; 
  border-top-right-radius: 1rem; 
} 
 
.middle { 
  position: relative; 
  height: 50px; 
  border-radius: 0; 
  align-self: flex-end; 
} 
 
.middle::before { 
  content: ''; 
  position: absolute; 
  top: -45px; 
  left: -1px; 
  width: 77px; 
  height: 75px; 
  border-radius: 50%; 
  background-color: white; 
}
<div class="wrapper"> 
  <div class="block"></div> 
  <div class="block middle"></div> 
  <div class="block"></div> 
</div>

Третий вариант:
Самый простой вариант - это нарисовать <path/> (SVG) в любом векторном редакторе.

<svg viewBox="0 0 1200 1200" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 
  <path d="m 13,101 c -0,-37 0,-70 0,-72 0,-2 1,-5 4,-8 l 4,-4 67,0 67,0 3,3 c 2,2 3,5 5,15 10,42 35,65 82,76 7,1 10,1 16,1 46,-5 74,-26 88,-62 1,-4 4,-13 5,-18 1,-8 2,-9 5,-12 l 3,-3 66,0 c 50,0 67,0 69,1 1,0 2,2 3,4 1,2 1,5 1,75 l 0,73 H 261 13 Z" stroke="dodgerblue" stroke-width="2" fill="none"/> 
</svg>

READ ALSO
после нажатия на картинку открыть её описание. html,css,js

после нажатия на картинку открыть её описание. html,css,js

Допустим есть много много картинок (около 5000штук) и после нажатия одной из них открыватся модальное окно с описанием этой картинки

161
Подчеркивание строки таблицы

Подчеркивание строки таблицы

Как на картинке нижеНужно сделать чтобы линия была по середине

263
Нельзя изменить CSS стили в консоли

Нельзя изменить CSS стили в консоли

на странице в консоли стили отображаются на сером фоне и в консоли их нельзя изменять, ничего типа livereload не подключено, с чем может быть связана...

178
Добавить текст в поле textarea

Добавить текст в поле textarea

Есть обычное поле для ввода текста:

252