2017-02-26 1 views
0

div에서 반원형을 만들려고합니다.div : 반원형 디스크를 만듭니다.

다음은 내가 시도한 것입니다.

div { 
 
    width: 100px; 
 
    height: 50px; 
 
    background: gray; 
 
    border-top-right-radius:100%; 
 
    border-top-left-radius:100%; 
 
}
<div> 
 
</div>

는 또한 헛된 50%100%, 모든 다른 조합을 시도했다.

나는 border-radius과 그 변종의 조합이 될 수 있다고 생각하지만, 알아낼 수는 없습니다.

P. 또한이 방법으로 가능하지 않다면 어떻게 할 수 있는지 알려주세요.

답변

1

테두리 폭은 요소 너비/높이의 백분율을 사용하여 계산되므로 브라우저 창이 완벽하게 사각형이 아니면 테두리가 원형이 아닌 타원형이됩니다.

div { 
 
    width: 100px; 
 
    height: 50px; 
 
    overflow: hidden; 
 
} 
 

 
div div { 
 
    width: 100px; 
 
    height: 100px; 
 
    background: gray; 
 
    border-radius: 50%; 
 
}
<div> 
 
    <div> 
 
    </div> 
 
</div>

(요청에 따라) 하나는 DIV 사용 : 여기 내 제안이다

div { 
 
    background: grey; 
 
    width: 100px; 
 
    height: 50px; 
 
    border-top-left-radius: 100px; 
 
    border-top-right-radius: 100px; 
 
}
<div></div>

하나 개 더 솔루션 (의사 요소를 사용하여) :

(하나의 DIV를 사용하여)

div { 
 
    width: 100px; 
 
    height: 50px; 
 
    overflow: hidden; 
 
} 
 

 
div::before { 
 
    content: ''; 
 
    display: block; 
 
    width: 100px; 
 
    height: 100px; 
 
    background: gray; 
 
    border-radius: 50%; 
 
}
<div></div>

또 하나의 해결책은 :

div { 
 
    width: 100px; 
 
    height: 50px; 
 
    background: gray; 
 
    border-radius: 50% 50% 0 0/100% 100% 0 0; 
 
}
<div></div>

+0

매끄러운 것을! +1 :) 한 div를 사용하여 수행 할 수 있습니까? – frederick99

+0

또한 'border-radius : 50 %'가되어서는 안됩니까? ... 어느 쪽이든 작동하는 것 같습니다. – frederick99

+0

그래, 50 %가 완벽하게 작동하는 것처럼 보입니다. "one div"솔루션의 업데이트 된 버전을 확인하십시오. 트릭은 테두리 - 반지름을 픽셀 단위로 하드 코딩하는 것입니다. 왜냐하면 %에서 컨테이너 크기를 사용한다고 말했기 때문입니다. – Mike

관련 문제