Несколько кнопок на один круг
Я хочу создать круг с расстояниями с моими 6 кнопками. На картинке вы можете увидеть результат моей попытки, но он не похож на круг. Я обвел свои проблемы красным. Ниже вы можете посмотреть мой HTML и CSS код.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.container {
margin-top: 360px;
margin-bottom: 16px;
padding-left: 30px;
padding-right: 30px;
}
.top-left {
margin-top: -260px;
margin-left: -20px;
border-radius: 40px / 100px;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
position: absolute;
}
.top-right {
margin-top: -260px;
margin-left: 155px;
border-radius: 40px / 100px;
border-bottom-left-radius: 0;
border-top-left-radius: 0;
border-bottom-right-radius: 0;
position: absolute;
}
.bottom-left {
margin-top: -160px;
margin-left: -20px;
border-radius: 40px / 100px;
border-top-right-radius: 0;
border-top-left-radius: 0;
border-bottom-right-radius: 0;
position: absolute;
}
.bottom-right {
margin-top: -160px;
margin-left: 155px;
border-radius: 40px / 100px;
border-top-right-radius: 0;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
position: absolute;
}
.top-center{
border-radius: 440px / 220px;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
width: 270px!important;
height: 70px!important;
margin-top: -334px;
margin-left: 15px;
position: absolute;
}
.top-center p {
padding: 0px 40px 0px 40px;
}
.bottom-center{
border-radius: 440px / 220px;
border-top-left-radius: 0;
border-top-right-radius: 0;
width: 270px!important;
height: 70px!important;
margin-top: -64px;
margin-left: 15px;
position: absolute;
}
.bottom-center p {
padding: 0px 40px 0px 40px;
}
.div-button {
width: 168px;
height: 92px;
border: 2px solid rgba(77,207,255,1);
background-color: transparent;
color: rgba(77,207,255,1);
font-size: 25px;
text-align: center;
vertical-align: middle;
line-height: 100px;
transition: all .3s linear;
}
.div-button p{
margin-top: -10px!important;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.button-selected {
transform: scale(0.8);
border: none;
background-color: rgba(77,207,255,1);
color: black;
}
</style>
</head>
<body>
<div class="container">
<div class="div-button top-center" id="top-center">
<p>Text</p>
</div>
<div class="div-button top-left" id="top-left">
<p>Text</p>
</div>
<div class="div-button top-right" id="top-right">
<p>Text</p>
</div>
<div class="div-button bottom-left" id="bottom-left">
<p>Text</p>
</div>
<div class="div-button bottom-right" id="bottom-right">
<p>Text</p>
</div>
<div class="div-button bottom-center" id="bottom-center">
<p>Text</p>
</div>
</div>
</body>
</html>
1 ответ
Решение
Как указано в комментариях, маршрут svg - это самый простой способ быстро воспроизвести то, что вы хотите.
Однако, любя вызов, я использовал overflow:hidden
а также position:absolute
эффективно маскировать различные разделы.
Я создал ручку здесь.
Любой контент, который вы хотите разместить внутри разделов, должен находиться внутри .circle
дела.
Я надеюсь, что это соответствует тому, что вы хотели.
.circle-container {
position:relative;
display:block;
width:400px;
height:400px;
margin:auto;
}
.circle-crop-top {
width: 100%;
height: 25%;
display:block;
overflow:hidden;
}
.circle-first-left, .circle-first-right, .circle-second-left, .circle-second-right {
float:left;
width: 50%;
height: 25%;
overflow: hidden;
white-space: nowrap;
}
.circle-bottom {
width:100%;
height:25%;
display: block;
overflow:hidden;
}
.circle-parent {
position:relative;
}
.circle-parent p {
position:absolute;
text-align:center;
margin:0;
}
.circle {
width:396px;
height:396px;
border-radius:50%;
position: absolute;
top:0;
border:2px solid blue;
text-align: center;
overflow:hidden;
}
.circle-first-left .circle {
top:-100px;
}
.circle-first-right .circle {
top:-100px;
right: 0;
}
.circle-second-left .circle {
top:-200px;
}
.circle-second-right .circle {
top:-200px;
right: 0;
}
.circle-bottom .circle {
top:-300px;
right: 0;
}
.circle-crop-top p {
margin:0;
border: 2px solid blue;
width: 100%;
height: 50px;
padding-top: 40px;
text-align: center;
top: -2px;
}
.circle-first-left p {
border: 2px solid blue;
width: 192px;
height: 60px;
margin:10px 0 10px 0;
padding-top: 30px;
text-align: center;
top: 23%;
left:-2px;
}
.circle-first-right p {
border: 2px solid blue;
width: 192px;
margin:10px 0 10px 0;
height: 60px;
padding-top: 30px;
text-align: center;
top: 23%;
right:-2px;
}
.circle-second-left p {
border: 2px solid blue;
width: 192px;
height: 60px;
margin:10px 0 10px 0;
padding-top: 30px;
text-align: center;
top: 48%;
left:-2px;
}
.circle-second-right p {
border: 2px solid blue;
width: 192px;
margin:10px 0 10px 0;
height: 60px;
padding-top: 30px;
text-align: center;
top: 48%;
right:-2px;
}
.circle-bottom p {
margin:0;
border: 2px solid blue;
width: 100%;
height: 60px;
padding-top: 40px;
text-align: center;
top: 76%;
}
<div class="circle-container">
<div class="circle-crop-top">
<div class="circle-parent">
<div class="circle"><p>Luzern</p></div>
</div>
</div>
<div class="circle-first-left">
<div class="circle-parent">
<div class="circle"><p>Bern</p></div>
</div>
</div>
<div class="circle-first-right">
<div class="circle-parent">
<div class="circle"><p>Zurich</p></div>
</div>
</div>
<div class="circle-second-left">
<div class="circle-parent">
<div class="circle"><p>Basel</p></div>
</div>
</div>
<div class="circle-second-right">
<div class="circle-parent">
<div class="circle"><p>Genf</p></div>
</div>
</div>
<div class="circle-bottom">
<div class="circle-parent">
<div class="circle"><p>Saas-Fee, Alpin</p></div>
</div>
</div>
</div>