你可以在沒有使用JS的情況下實現。
放置一個透明覆選框(不透明度:0)作爲每.grid__col
的與圖像的確切相同的尺寸和然後添加以下的CSS的第一個子(圖像前):
.grid__col > input:nth-child(1) {
width: 140px !important;
height: 100px !important;
position: absolute !important;
opacity: 0 !important;
}
.grid__col > input:nth-child(1):checked+img+.icon-text {
visibility: visible !important;
display: block !important;
}
.grid__col > input:nth-child(1)
是保證所需的輸入(複選框)是一個孩子,並且第一個孩子的標記名爲input
,它的.grid__col
,所以我們想要的透明覆選框的樣式就在那裏。
.grid__col > input:nth-child(1):checked+img+.icon-text
是告訴瀏覽器,如果我的期望checkbox
是checked
那麼樣式應用到一個元素與類名.icon-text
是相鄰的元素img
這是一個還靠近檢查checkbox
。
.grid {
display: flex;
flex-wrap: wrap;
margin: 0 auto;
max-width: 1300px;
}
.grid__col {
padding-right: 16px
padding-left: 16px;
}
.icons-grid {
img {margin: 0 auto;}
}
.icon-text {
max-width: 200px;
margin: 0 auto;
visibility: hidden;
display: none;
}
@media (min-width:961px) {
.grid__col--1-4-l {
width: 25%;
}
}
@media (min-width:641px) {
.grid__col--1-4-m {
width: 25%;
}
}
.grid__col--1-4-s {
width:25%;
}
.grid_col--end {
margin-left: auto;
}
.grid__col > input:nth-child(1) {
width: 140px !important;
height: 100px !important;
position: absolute !important;
opacity: 0 !important;
}
.grid__col > input:nth-child(1):checked+img+.icon-text {
visibility: visible !important;
display: block !important;
}
<div class="grid icons-grid ">
<div class='grid__col grid__col--1-4-l grid__col--1-4-m grid__col--1-4-s text1' data-text='Text 1'>
<input type="checkbox"/>
<img src='http://via.placeholder.com/140x100'>
<p class="icon-text">Text 1</p>
</div>
<div class='grid__col grid__col--1-4-l grid__col--1-4-m grid__col--1-4-s text2' data-text='Text 2'>
<input type="checkbox"/>
<img src='http://via.placeholder.com/140x100'>
<p class="icon-text">Text 2</p>
</div>
<div class='grid__col grid__col--1-4-l grid__col--1-4-m grid__col--1-4-s text3' data-text='Text3'>
<input type="checkbox"/>
<img src='http://via.placeholder.com/140x100'>
<p class="icon-text">Text 3</p>
</div>
<div class='grid__col grid__col--1-4-l grid__col--1-4-m grid__col--1-4-s grid__col--end text4' data-text='Te 4'>
<input type="checkbox"/>
<img src='http://via.placeholder.com/140x100'>
<p class="icon-text">Text 4</p>
</div>
</div>
編輯
比方說,你想一個.icon-text
出現(那其他的人,當你點擊另一個圖像消失)。 如果你想用相同的技術做到這一點,那麼你唯一需要做的就是將input
的類型改爲radio
,並用「show-text」或別的名稱將它們鏈接起來。 <input type="checkbox"/>
至<input type="radio" name="show-text"/>
。沒有必要改變CSS。
.grid {
display: flex;
flex-wrap: wrap;
margin: 0 auto;
max-width: 1300px;
}
.grid__col {
padding-right: 16px
padding-left: 16px;
}
.icons-grid {
img {margin: 0 auto;}
}
.icon-text {
max-width: 200px;
margin: 0 auto;
visibility: hidden;
display: none;
}
@media (min-width:961px) {
.grid__col--1-4-l {
width: 25%;
}
}
@media (min-width:641px) {
.grid__col--1-4-m {
width: 25%;
}
}
.grid__col--1-4-s {
width:25%;
}
.grid_col--end {
margin-left: auto;
}
.grid__col > input:nth-child(1) {
width: 140px !important;
height: 100px !important;
position: absolute !important;
opacity: 0 !important;
}
.grid__col > input:nth-child(1):checked+img+.icon-text {
visibility: visible !important;
display: block !important;
}
<div class="grid icons-grid ">
<div class='grid__col grid__col--1-4-l grid__col--1-4-m grid__col--1-4-s text1' data-text='Text 1'>
<input type="radio" name="show-text"/>
<img src='http://via.placeholder.com/140x100'>
<p class="icon-text">Text 1</p>
</div>
<div class='grid__col grid__col--1-4-l grid__col--1-4-m grid__col--1-4-s text2' data-text='Text 2'>
<input type="radio" name="show-text"/>
<img src='http://via.placeholder.com/140x100'>
<p class="icon-text">Text 2</p>
</div>
<div class='grid__col grid__col--1-4-l grid__col--1-4-m grid__col--1-4-s text3' data-text='Text3'>
<input type="radio" name="show-text"/>
<img src='http://via.placeholder.com/140x100'>
<p class="icon-text">Text 3</p>
</div>
<div class='grid__col grid__col--1-4-l grid__col--1-4-m grid__col--1-4-s grid__col--end text4' data-text='Te 4'>
<input type="radio" name="show-text"/>
<img src='http://via.placeholder.com/140x100'>
<p class="icon-text">Text 4</p>
</div>
</div>
您需要JavaScript來做到這一點的功能,你試圖做一些事情?分享您的JS代碼,以便我們可以爲您提供幫助 – Frankusky
您在找什麼?無法得到它。你想僅在圖像被點擊時顯示你的文字? –