[英]How to show respective div on clicking a radio button
I want to show respective divs when clicked on the radio button.单击单选按钮时,我想显示相应的 div。 div and radio buttons are on different plains thus I am not able to do this using input:checked +.descendingelement method. div 和单选按钮位于不同的平原上,因此我无法使用input:checked +.descendingelement方法执行此操作。 I have created a codepen.我创建了一个代码笔。 My aim is that if i click on Albums radio button then only the div related to albums should be visible.我的目标是,如果我点击专辑单选按钮,那么只有与专辑相关的 div 应该可见。 and if i click on articles radio button articles' div should be visible.如果我点击文章单选按钮文章的 div 应该是可见的。 If possible to do so using css only please help me or I need to use javascript for this.如果可能的话,请仅使用 css 来帮助我,否则我需要为此使用 javascript。 Initially Articles should be visible.最初文章应该是可见的。
<div class="creator-programs">
<div class="programTitles">
<div class="programTitles-inner">
<input type="radio" name="programdivs" id="albums" data-target="Albums" class="programButton" checked>
<label for="albums" id="albumsLabel" class="programlabel">Albums</label>
<input type="radio" name="programdivs" id="articles" data-target="ARTICLES BY" class="programButton">
<label for="articles" class="programlabel">Articles</label>
<input type="radio" name="programdivs" id="documents" data-target="DOCUMENTS BY" class="programButton">
<label for="documents" class="programlabel">Documents</label>
<input type="radio" name="programdivs" id="subs" data-target="SUBSCRIPTIONS OF" class="programButton">
<label for="subs" class="programlabel">Subscriptions</label>
<input type="radio" name="programdivs" id="workshops" data-target="WORKSHOPS BY" class="programButton">
<label for="workshops" class="programlabel">Workshops</label>
<input type="radio" name="programdivs" id="recs" data-target="RECS BY" class="programButton">
<label for="recs" class="programlabel">Recs</label>
</div>
</div>
<div class="programValues">
<div class="programTitle">
<h1 class="title-target">ALBUMS BY </h1> <h1 class="programHeading"> SAMPAT</h1>
</div>
<div class="program-content">
<div class="program-data-div" id="albumsContainer">
This will contain albums
</div>
<div class="program-data-div" id="articlesContainer">
This will contain Articles
</div>
<div class="program-data-div" id="documentsContainer">
This will contain Documents
</div>
<div class="program-data-div" id="subContainer">
This will contain Subscriptions
</div>
<div class="program-data-div" id="workshopsContainer">
This will contain Workshops
</div>
<div class="program-data-div" id="recsContainer">
This will contain Recs
</div>
</div>
</div>
</div>
.creator-programs{
font-family:Montserrat, sans-serif ;
display:grid;
grid-template-columns: 1fr 5fr;
margin:20px 2.4em;
padding:15px 8px;
background-color:#333;
border-radius:8px;
}
.programTitles-inner{
display:flex;
flex-direction: column;
gap:20px;
}
.programTitles-inner input:checked + label{
background:#F0F0F0;
color:#000;
transition:all 0.8s ease-in;
}
.programButton{
userselect:none;
border:none;
display:none;
border:none;
border-radius:10px;
padding:10px 20px;
width:200px;
font-size:1.3rem;
font-weight:700;
cursor:pointer;
background:none;
color:#fff;
}
.programlabel{
border:none;
border:none;
border-radius:10px;
padding:10px 20px;
text-align: center;
width:200px;
font-size:1.3rem;
font-weight:700;
cursor:pointer;
background:none;
color:#fff;
transition:all 0.8s ease-out;
}
.programTitle{
display:flex;
}
.programTitles-inner input:checked + label{
background:#F0F0F0;
color:#000;
transition:all 0.8s ease-in;
}
.program-data-div{
display:none;
}
#albums:checked .program-data-div:first-child{
display: flex !important;;
}
.programButton:focus{
border:none;
}
.programValues{
color:#fff;
display: flex;
flex-direction: column;
align-items: center;
}
.programTitles-inner{
display:flex;
flex-direction: column;
gap:20px;
}
let progButtons = document.querySelectorAll(".programButton")
progButtons.forEach(function (progbtn) {
progbtn.addEventListener('click', function(event){
// console.log(event.target.getAttribute("data-target"))
document.querySelector(".title-target").innerHTML = event.target.getAttribute("data-target")
})
})
codepen: https://codepen.io/sampat-28/pen/KKeJyMg代码笔: https://codepen.io/sampat-28/pen/KKeJyMg
I give you a javascript solution, the progButtons.forEach function will be changed as below:我给你一个 javascript 的解决方案,将 progButtons.forEach function 改成如下:
progButtons.forEach(function (progbtn) { progbtn.addEventListener('click', function(event){ // console.log(event.target.getAttribute("data-target")) document.querySelector(".title-target").innerHTML = event.target.getAttribute("data-target") let progContents=document.querySelector(".program-content").children; for (let i=0;i<progContents.length;i++){ if (progContents[i].id===(event.target.id+"Container")){ progContents[i].className=""; }else{ progContents[i].className="program-data-div"; } } }) })
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.