CSS에서만 탭 전환을 구현하는 방법
CSS에서만 탭 전환을 구현하는 방법
이 기사에서는 웹 페이지에서 자주 사용되는 탭 구현에 대해 실제로 만들어 온 절차를 기록해 갑니다.
또한,
· Ruby on Rails로 메르카리의 클론 앱을 만들고 있다.
· 표기는 haml, Scss입니다.
이상이 전제 조건입니다.
원래 왜 탭을 만드는가?
1 페이지에 포함되어 있는 정보량이 많을 때에, 예를 들면 2 섹션으로 나누어지는 정보가 있으면, 한쪽의 정보를 숨겨 두는 것으로 페이지의 외관이 깨끗이 합니다.
실제로 구현의 순서를 설명해 갑니다.
우선, 간단한 형태를 만듭니다.
haml.tabs
%input#tab-1{:checked => "checked", :name => "tab-radio", :type => "radio"}/
%label.tab-label{:for => "tab-1"} ページ1
%input#tab-2{:name => "tab-radio", :type => "radio"}/
%label.tab-label{:for => "tab-2"} ページ2
.tab-content.tab-1-content
ここはタブ1です。
.tab-content.tab-2-content
ここはタブ2です。
scss
.tabs {
margin-top: 12px;
width:700px;
.tab-label {
display: inline-block;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
border: 1px solid #999;
background-color: #f3f3f3;
margin-left: 1px;
margin-right: 1px;
padding: 3px 6px;
border-bottom: none;
font-size: 0.9em;
&:hover {
opacity: 0.7;
}
}
input[name="tab-radio"] {
display: none;
}
.tab-content {
display: none;
border: 1px solid #999;
padding: 10px;
min-height: 200px;
}
#tab-1:checked ~ .tab-1-content, #tab-2:checked ~ .tab-2-content, #tab-3:checked ~ .tab-3-content, #tab-4:checked ~ .tab-4-content, #tab-5:checked ~ .tab-5-content {
display: block;
}
input[name="tab-radio"]:checked + .tab-label {
background-color: #fff;
}
}
이 시점에서 다음과 같은 표시를 할 수 있습니다.
코드의 세부 사항을 살펴 보겠습니다.
haml.tabs
%input#tab-1{:checked => "checked", :name => "tab-radio", :type => "radio"}/
%label.tab-label{:for => "tab-1"} ページ1
%input#tab-2{:name => "tab-radio", :type => "radio"}/
%label.tab-label{:for => "tab-2"} ページ2
.tab-content.tab-1-content
ここはタブ1です。
.tab-content.tab-2-content
ここはタブ2です。
haml.tabs
%input#tab-1{:checked => "checked", :name => "tab-radio", :type => "radio"}/
%label.tab-label{:for => "tab-1"} ページ1
input과 label이 간이 됩니다.
input에 #tab-1이라는 id를 붙여, label에 같은 tab-1이라는 이름을 for로 붙여 줍니다.
이제 input과 rabel이 상호 대응할 수 있습니다.
input은 :type => "radio"로 라디오 버튼의 요소를 갖게 하는 것으로 클릭이 가능하게 됩니다.
이것을 label과 조합하는 것으로, 실제로 tab가 밀릴 수 있게 되어 있다는 것이 됩니다.
tab-content.tab-1-content
다음은 탭 내용이 표시되는 영역입니다.
다음으로 CSS를 살펴 보겠습니다.
scss
.tabs {
margin-top: 12px;
width:700px;
.tab-label {
display: inline-block;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
border: 1px solid #999;
background-color: #f3f3f3;
margin-left: 1px;
margin-right: 1px;
padding: 3px 6px;
border-bottom: none;
font-size: 0.9em;
&:hover {
opacity: 0.7;
}
}
input[name="tab-radio"] {
display: none;
}
.tab-content {
display: none;
border: 1px solid #999;
padding: 10px;
min-height: 200px;
}
#tab-1:checked ~ .tab-1-content, #tab-2:checked ~ .tab-2-content, #tab-3:checked ~ .tab-3-content, #tab-4:checked ~ .tab-4-content, #tab-5:checked ~ .tab-5-content {
display: block;
}
input[name="tab-radio"]:checked + .tab-label {
background-color: #fff;
}
}
scss input[name="tab-radio"] {
display: none;
input[name="tab-radio"]
에 display:none;
붙여 드리겠습니다.
이 라디오 버튼을 지워주는 표기가 됩니다.
scss#tab-1:checked ~ .tab-1-content, #tab-2:checked ~ .tab-2-content {
display: block;
}
다음 중요한 것은이 설명입니다.
id: tab-1에 체크(클릭)되었을 경우에 .tab-1-content 이하를 표시한다.
마찬가지로 tab-2에 체크(클릭)되었을 경우에 .tab-2-content 이하를 표시한다.
라는 설명입니다.
마지막으로
scssinput[name="tab-radio"]:checked + .tab-label {
background-color:red;
}
이하의 설명으로,
선택한 탭의 내용을 변경할 수 있습니다.
이 절차를 사용하면 간단한 탭을 만들 수 있습니다.
Reference
이 문제에 관하여(CSS에서만 탭 전환을 구현하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/merumeru/items/42162e8bf958a1081f3e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
.tabs
%input#tab-1{:checked => "checked", :name => "tab-radio", :type => "radio"}/
%label.tab-label{:for => "tab-1"} ページ1
%input#tab-2{:name => "tab-radio", :type => "radio"}/
%label.tab-label{:for => "tab-2"} ページ2
.tab-content.tab-1-content
ここはタブ1です。
.tab-content.tab-2-content
ここはタブ2です。
.tabs {
margin-top: 12px;
width:700px;
.tab-label {
display: inline-block;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
border: 1px solid #999;
background-color: #f3f3f3;
margin-left: 1px;
margin-right: 1px;
padding: 3px 6px;
border-bottom: none;
font-size: 0.9em;
&:hover {
opacity: 0.7;
}
}
input[name="tab-radio"] {
display: none;
}
.tab-content {
display: none;
border: 1px solid #999;
padding: 10px;
min-height: 200px;
}
#tab-1:checked ~ .tab-1-content, #tab-2:checked ~ .tab-2-content, #tab-3:checked ~ .tab-3-content, #tab-4:checked ~ .tab-4-content, #tab-5:checked ~ .tab-5-content {
display: block;
}
input[name="tab-radio"]:checked + .tab-label {
background-color: #fff;
}
}
.tabs
%input#tab-1{:checked => "checked", :name => "tab-radio", :type => "radio"}/
%label.tab-label{:for => "tab-1"} ページ1
%input#tab-2{:name => "tab-radio", :type => "radio"}/
%label.tab-label{:for => "tab-2"} ページ2
.tab-content.tab-1-content
ここはタブ1です。
.tab-content.tab-2-content
ここはタブ2です。
.tabs
%input#tab-1{:checked => "checked", :name => "tab-radio", :type => "radio"}/
%label.tab-label{:for => "tab-1"} ページ1
.tabs {
margin-top: 12px;
width:700px;
.tab-label {
display: inline-block;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
border: 1px solid #999;
background-color: #f3f3f3;
margin-left: 1px;
margin-right: 1px;
padding: 3px 6px;
border-bottom: none;
font-size: 0.9em;
&:hover {
opacity: 0.7;
}
}
input[name="tab-radio"] {
display: none;
}
.tab-content {
display: none;
border: 1px solid #999;
padding: 10px;
min-height: 200px;
}
#tab-1:checked ~ .tab-1-content, #tab-2:checked ~ .tab-2-content, #tab-3:checked ~ .tab-3-content, #tab-4:checked ~ .tab-4-content, #tab-5:checked ~ .tab-5-content {
display: block;
}
input[name="tab-radio"]:checked + .tab-label {
background-color: #fff;
}
}
input[name="tab-radio"] {
display: none;
#tab-1:checked ~ .tab-1-content, #tab-2:checked ~ .tab-2-content {
display: block;
}
input[name="tab-radio"]:checked + .tab-label {
background-color:red;
}
Reference
이 문제에 관하여(CSS에서만 탭 전환을 구현하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/merumeru/items/42162e8bf958a1081f3e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)