我想在每个图像的右下方显示一个复选框供选择。.我怎么能做这样的事?请记住,点击图像有一个独特的事件(我会设法做到!),但单击该复选框应选择/取消选择该复选框?
tzxcd3kk1#
这可以用纯CSS来完成,假设你对所有图像都有固定的宽度和高度。技巧是为复选框设置绝对位置,然后将bottom和right分配为零。HTML示例:
bottom
right
<div class="container"> <img src="image1.jpg" /> <input type="checkbox" class="checkbox" id="check1" /> </div> <div class="container"> <img src="image2.jpg" /> <input type="checkbox" class="checkbox" id="check2" /> </div>
CSS:
.container { position: relative; width: 100px; height: 100px; float: left; margin-left: 10px; } .checkbox { position: absolute; bottom: 0px; right: 0px; }
Live test case。对于点击事件,只需将点击处理程序应用于每个复选框,它就会工作得很好。参见this updated fiddle。
c9qzyr3d2#
您可以使用**“label”标签,其中包含“img”**标签。这里有一个使用图像作为复选框和单选框的例子。
* { font-family: Lato; margin: 0; padding: 0; --transition: 0.15s; --border-radius: 0.5rem; --background: #ffc107; --box-shadow: #ffc107; } .cont-bg { min-height: 100vh; background-image: radial-gradient( circle farthest-corner at 7.2% 13.6%, rgba(37, 249, 245, 1) 0%, rgba(8, 70, 218, 1) 90% ); padding: 1rem; display: flex; flex-direction: column; align-items: center; justify-content: center; } .cont-title { color: white; font-size: 1.25rem; font-weight: 600; margin-bottom: 1rem; } .cont-main { display: flex; flex-wrap: wrap; align-content: center; justify-content: center; } .cont-checkbox { width: 150px; height: 100px; border-radius: var(--border-radius); box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); background: white; transition: transform var(--transition); } .cont-checkbox:first-of-type { margin-bottom: 0.75rem; margin-right: 0.75rem; } .cont-checkbox:active { transform: scale(0.9); } input { display: none; } input:checked + label { opacity: 1; box-shadow: 0 0 0 3px var(--background); } input:checked + label img { -webkit-filter: none; /* Safari 6.0 - 9.0 */ filter: none; } input:checked + label .cover-checkbox { opacity: 1; transform: scale(1); } input:checked + label .cover-checkbox svg { stroke-dashoffset: 0; } label { display: inline-block; cursor: pointer; border-radius: var(--border-radius); overflow: hidden; width: 100%; height: 100%; position: relative; opacity: 0.6; } label img { width: 100%; height: 70%; object-fit: cover; clip-path: polygon(0% 0%, 100% 0, 100% 81%, 50% 100%, 0 81%); -webkit-filter: grayscale(100%); /* Safari 6.0 - 9.0 */ filter: grayscale(100%); } label .cover-checkbox { position: absolute; right: 5px; top: 3px; z-index: 1; width: 20px; height: 20px; border-radius: 50%; background: var(--box-shadow); border: 2px solid #fff; transition: transform var(--transition), opacity calc(var(--transition) * 1.2) linear; opacity: 0; transform: scale(0); } label .cover-checkbox svg { width: 13px; height: 11px; display: inline-block; vertical-align: top; fill: none; margin: 5px 0 0 3px; stroke: #fff; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 16px; transition: stroke-dashoffset 0.4s ease var(--transition); stroke-dashoffset: 16px; } label .info { text-align: center; margin-top: 0.2rem; font-weight: 600; font-size: 0.8rem; }
<div class="cont-bg"> <div class="cont-title">Checkbox</div> <div class="cont-main"> <div class="cont-checkbox"> <input type="checkbox" id="myCheckbox-1" /> <label for="myCheckbox-1"> <img src="https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/2021-mazda-mx-5-miata-mmp-1-1593459650.jpg?crop=0.781xw:0.739xh;0.109xw,0.0968xh&resize=480:*" /> <span class="cover-checkbox"> <svg viewBox="0 0 12 10"> <polyline points="1.5 6 4.5 9 10.5 1"></polyline> </svg> </span> <div class="info">Mazda MX-5 Miata</div> </label> </div> <div class="cont-checkbox"> <input type="checkbox" id="myCheckbox-2" /> <label for="myCheckbox-2"> <img src="https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/2020-chevrolet-corvette-c8-102-1571146873.jpg?crop=0.548xw:0.411xh;0.255xw,0.321xh&resize=980:*" /> <span class="cover-checkbox"> <svg viewBox="0 0 12 10"> <polyline points="1.5 6 4.5 9 10.5 1"></polyline> </svg> </span> <div class="info">Toyota Supra</div> </label> </div> </div> <div class="cont-title">Radio</div> <div class="cont-main"> <div class="cont-checkbox"> <input type="radio" name="myRadio" id="myRadio-1" /> <label for="myRadio-1"> <img src="https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/2021-mazda-mx-5-miata-mmp-1-1593459650.jpg?crop=0.781xw:0.739xh;0.109xw,0.0968xh&resize=480:*" /> <span class="cover-checkbox"> <svg viewBox="0 0 12 10"> <polyline points="1.5 6 4.5 9 10.5 1"></polyline> </svg> </span> <div class="info">Mazda MX-5 Miata</div> </label> </div> <div class="cont-checkbox"> <input type="radio" name="myRadio" id="myRadio-2" /> <label for="myRadio-2"> <img src="https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/2020-chevrolet-corvette-c8-102-1571146873.jpg?crop=0.548xw:0.411xh;0.255xw,0.321xh&resize=980:*" /> <span class="cover-checkbox"> <svg viewBox="0 0 12 10"> <polyline points="1.5 6 4.5 9 10.5 1"></polyline> </svg> </span> <div class="info">Toyota Supra</div> </label> </div> </div> </div>
zdwk9cvp3#
如果您只需要选择/取消选择复选框,那么我的建议是:
**第一步:**将图片和复选框放在一个块中(可以是div或table)**步骤2:**提供具有特定高度和宽度的块的相对位置。**第三步:**对于复选框,给予它绝对位置,并设置右侧和底部的间隙(根据您的要求)。
例如,代码应该如下所示
<div class="img_block"> <img src="image-path" alt="" /> <input type="checkbox" class="chkbox" /> </div> <div class="img_block"> <img src="image-path" alt="" /> <input type="checkbox" class="chkbox" /> </div>
同样的css是
.img_block { position: relative; width: 230px; margin-right: 20px; margin-bottom: 10px; height: 30px; } .chkbox { position: absolute; right: 5px; bottom: 3px; }
我希望这符合你的要求。
xggvc2p64#
如果是我,我会尝试使用jQuery。让我们假设每个图像都在各自的div中,并且checkbo的id为check:
$('div').click(function() { //you select the checkbox and ad the code to do what you want to it ('#check'). });
4条答案
按热度按时间tzxcd3kk1#
这可以用纯CSS来完成,假设你对所有图像都有固定的宽度和高度。技巧是为复选框设置绝对位置,然后将
bottom
和right
分配为零。HTML示例:
CSS:
Live test case。
对于点击事件,只需将点击处理程序应用于每个复选框,它就会工作得很好。参见this updated fiddle。
c9qzyr3d2#
您可以使用**“label”标签,其中包含“img”**标签。
这里有一个使用图像作为复选框和单选框的例子。
zdwk9cvp3#
如果您只需要选择/取消选择复选框,那么我的建议是:
**第一步:**将图片和复选框放在一个块中(可以是div或table)
**步骤2:**提供具有特定高度和宽度的块的相对位置。
**第三步:**对于复选框,给予它绝对位置,并设置右侧和底部的间隙(根据您的要求)。
例如,代码应该如下所示
同样的css是
我希望这符合你的要求。
xggvc2p64#
如果是我,我会尝试使用jQuery。让我们假设每个图像都在各自的div中,并且checkbo的id为check: