CSS 플래그: 인도
이제 제가 무엇을 하려는지 짐작하셨을 것입니다. 그럼 바로 시작하겠습니다.
방법-1
이제 당신은 그것이 어떻게 생겼는지 보았습니다. 해보자.
플래그 스트립 만들기
<div class="flag">
<div class="saffron"></div>
<div class="white"></div>
<div class="green"></div>
</div>
인도의 국기는 상단이 짙은 사프란(Kesari), 중앙이 흰색, 하단이 짙은 녹색의 가로 삼색기입니다.
부모 또는 래퍼 클래스를 생성했습니다
.flag
. 깃발의 각 수평 부분을 나타내는 3개divs
가 있습니다.이제 CSS로 스타일을 지정해 보겠습니다.
* {
box-sizing: border-box;
margin: 0;
}
:root {
--saffron : #ff6600;
--green : #046434;
--blue: #1c1ca5;
}
/* You can change the body color as per your needs */
body {
background-color: aliceblue;
}
/* Flag is 300x200 */
.flag {
width: 300px;
height: 200px;
display: flex;
flex-direction: column;
box-shadow: 0 0 1px rgba(0, 0, 0,0.5);
}
/* It will divide each section (saffron, white, green) equally */
.flag > * {
flex:1;
}
.saffron {
background-color: var(--saffron);
}
.white {
position: relative;
background-color: white;
}
.green {
background-color: var(--green);
}
이 스타일을 적용한 후. 결과는 다음과 같습니다.
휠 추가
이제 흰색 스트립 중앙에 바퀴를 추가해 보겠습니다.
<div class="flag">
<div class="saffron"></div>
<div class="white">
<!-- New Part Added -->
<div class="wheel">
<span class="spoke"></span>
<span class="spoke"></span>
<span class="spoke"></span>
<span class="spoke"></span>
<span class="spoke"></span>
<span class="spoke"></span>
<span class="spoke"></span>
<span class="spoke"></span>
<span class="spoke"></span>
<span class="spoke"></span>
<span class="spoke"></span>
<span class="spoke"></span>
<span class="spoke"></span>
</div>
<!-- New Part End -->
</div>
<div class="green"></div>
</div>
.wheel
컨테이너 클래스 내부에 .white
div를 추가했습니다. 인도 국기에는 사람의 24가지 특성을 나타내는 바퀴(아쇼카 차크라)에 24개의 살이 있습니다. 그래서 내부에 13개의 스포크를 추가했습니다.wheel
. -webkit-box-reflect을 사용할 예정이므로 스포크 13개면 충분합니다.휠의 스타일을 지정해 보겠습니다.
.wheel {
height: 100%;
width: 67px;
border-radius: 1in;
margin: 0 auto;
border: 2q solid var(--blue);
position: relative;
display: grid;
place-items: center;
}
.spoke {
height: 50%;
width: 2px;
position: absolute;
top: 0;
clip-path: polygon(50% 0, 50% 0, 100% 70%, 50% 100%, 50% 100%, 0 70%);
transform-origin: bottom; /* as we are going to rotate spokes so we need to rotate from the bottom */
background-color: var(--blue);
}
/* Styling spoke individually */
.spoke:nth-child(1) {
transform: rotate(15deg)
}
.spoke:nth-child(2) {
transform: rotate(30deg);
}
.spoke:nth-child(3) {
transform: rotate(45deg)
}
.spoke:nth-child(4) {
transform: rotate(60deg)
}
.spoke:nth-child(5) {
transform: rotate(75deg)
}
.spoke:nth-child(6) {
transform: rotate(90deg)
}
.spoke:nth-child(7) {
transform: rotate(105deg)
}
.spoke:nth-child(8) {
transform: rotate(120deg)
}
.spoke:nth-child(9) {
transform: rotate(135deg)
}
.spoke:nth-child(10) {
transform: rotate(150deg)
}
.spoke:nth-child(11) {
transform: rotate(165deg)
}
.spoke:nth-child(12) {
transform: rotate(180deg)
}
이제
.wheel
에 -webkit-box-reflect를 추가해야 합니다..wheel {
/* .... */
-webkit-box-reflect: left -99%; /* play with value -99%, 100%, 101% */
animation: spin 4s linear infinite;
/* .... */
}
결과
다음 코드펜에서 결과를 볼 수 있습니다.
자바스크립트를 이용한 방법-2
위의 솔루션은 잘 작동하지만 중복이 많고 스타일이 각각
spoke
다소 성가시며 일부 스포크에 중복이 있습니다. 이 문제를 해결하기 위해 약간의 자바스크립트를 사용할 것입니다.HTML
<div class="flag">
<div class="saffron"></div>
<div class="white">
<div class="wheel"></div>
</div>
<div class="green"></div>
</div>
멋진 것은 없습니다.
.wheel
스트립 컨테이너 안에 .white
만 추가했습니다.CSS
* {
box-sizing: border-box;
margin: 0;
}
:root {
--saffron : #ff6600;
--green : #046434;
--blue: #1c1ca5;
}
.flag {
width: 300px;
height: 200px;
display: flex;
flex-direction: column;
box-shadow: 0 0 1px rgba(0, 0, 0,0.5);
}
.flag > * {
flex:1;
}
.saffron {
background-color: var(--saffron);
}
.white {
background-color: white;
position: relative;
}
.green {
background-color: var(--green);
}
.wheel {
height: 100%;
width: 67px;
border-radius: 1in;
margin: 0 auto;
border: 2q solid var(--blue);
position: relative;
display: grid;
place-items: center;
}
.spoke {
height: 50%;
width: 2px;
position: absolute;
top: 0;
clip-path: polygon(50% 0, 50% 0, 100% 70%, 50% 100%, 50% 100%, 0 70%);
transform-origin: bottom;
background-color: var(--blue);
}
@keyframes spin {
100% {
transform: rotate(360deg);
}
}
이전 스타일의 유일한 변경 사항은 각 스포크를 개별적으로 스타일링하지 않는다는 것입니다.
자바스크립트
const wheel = document.querySelector(".wheel");
for (let i =1; i <= 24; i++){
let spoke = document.createElement('span');
spoke.classList.add("spoke");
spoke.style.rotate = `${i*15}deg`;
wheel.appendChild(spoke)
}
여기서는
span
를 생성하고 여기에 .spoke
클래스를 추가한 다음 회전시킵니다. 각 스포크에 대해 회전을 15deg
증가시킵니다. 그런 다음 휠에 스포크를 추가하기만 하면 됩니다.결과
참고: 데스크탑/노트북에서 Codepen을 사용해 보십시오. 모바일 장치에 몇 가지 문제가 있습니다.
마무리
질문이 있으시면 아래에 의견을 남겨주십시오. 더 많은 기사를 팔로우하십시오. 당신이 이것을 좋아한다면 그것을 ❤️하는 것을 잊지 마십시오. 다음에 보고 싶은 국기를 댓글로 달아주세요. 다음편에서 뵙겠습니다.
Reference
이 문제에 관하여(CSS 플래그: 인도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/j471n/css-flag-india-1bg3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)