上次单击的图像周围的边框
Border around last clicked image
我正在尝试使一些<img>
元素的行为类似于<input type="radio">
按钮(已经管理好了(,现在我需要通知用户他的选择。为此,我想围绕最后一个选定的图像进行border
。
请注意,我有超过 1 行收音机,因此用户应该能够单击第一行中的一个图像(它应该保持突出显示(,然后他必须能够单击第二行,依此类推,同时他的选择保持突出显示。
.product-info .option img:active
{
border:1px solid #d9d1d5;
}
示例代码
.images img:active {
border:3px solid #000;
}
<div class="images">
<img src="https://cdn.tutsplus.com/net/uploads/legacy/958_placeholders/placehold.gif">
<img src="https://cdn.tutsplus.com/net/uploads/legacy/958_placeholders/placehold.gif">
<img src="https://cdn.tutsplus.com/net/uploads/legacy/958_placeholders/placehold.gif">
<img src="https://cdn.tutsplus.com/net/uploads/legacy/958_placeholders/placehold.gif">
</div>
我会选择稍微不同的方法,不使用任何javascript。基本思想是你想模仿单选按钮,所以让我们使用单选按钮(和标签(功能......
.HTML
<div class="images">
<input type="radio" name="test" value="1" id="test1">
<label for="test1">
<img src="https://cdn.tutsplus.com/net/uploads/legacy/958_placeholders/placehold.gif">
</label>
<input type="radio" name="test" value="2" id="test2">
<label for="test2">
<img src="https://cdn.tutsplus.com/net/uploads/legacy/958_placeholders/placehold.gif">
</label>
<input type="radio" name="test" value="3" id="test3">
<label for="test3">
<img src="https://cdn.tutsplus.com/net/uploads/legacy/958_placeholders/placehold.gif">
</label>
<input type="radio" name="test" value="4" id="test4">
<label for="test4">
<img src="https://cdn.tutsplus.com/net/uploads/legacy/958_placeholders/placehold.gif">
</label>
</div>
.CSS
input[type="radio"] {display:none;}
input[type="radio"]:checked+label img {border:3px solid #000;}
还有小提琴
解释
正确设置后,单击标签标签会选中关联的单选按钮/复选框(并将焦点放在其他类型的字段上(。我将这种默认行为与"相邻同级"CSS 选择器+
和:checked
伪选择器结合使用,以定位相邻标签及其img
子标签。这样做的一个附加值是,您可以完全将其发布为表单,它将发布单选按钮值...
原则上
只需检测合格元素的单击事件,从所有合格元素中删除表示选定状态的类,然后添加到单击的元素中。
$('.radioImg').on('click', function() {
$('.radioImg').removeClass('selected')
$(this).addClass('selected');
});
.radioImg.selected {
border: 1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img class='radioImg' src='https://www.gravatar.com/avatar/f62f93c13e2aad52fa08a693ce13da48?s=32&d=identicon&r=PG&f=1' />
<img class='radioImg' src='https://www.gravatar.com/avatar/f62f93c13e2aad52fa08a693ce13da48?s=32&d=identicon&r=PG&f=1' />
<img class='radioImg' src='https://www.gravatar.com/avatar/f62f93c13e2aad52fa08a693ce13da48?s=32&d=identicon&r=PG&f=1' />
然而
如果你有多个这样的东西集,你可以包装在一个父元素中,将选择器更改为缩小,并使用同级从相邻项中删除类。这代表了一个更可重用的实现。
$('div .radioImg').on('click', function() {
$(this).addClass('selected').siblings().removeClass('selected');
});
.radioImg.selected {
border: 1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<img class='radioImg' src='https://www.gravatar.com/avatar/f62f93c13e2aad52fa08a693ce13da48?s=32&d=identicon&r=PG&f=1' />
<img class='radioImg' src='https://www.gravatar.com/avatar/f62f93c13e2aad52fa08a693ce13da48?s=32&d=identicon&r=PG&f=1' />
<img class='radioImg' src='https://www.gravatar.com/avatar/f62f93c13e2aad52fa08a693ce13da48?s=32&d=identicon&r=PG&f=1' />
</div>
您可以使用jquery并检查具有特定类的图像,例如:
$("img").on("click", function() {
//remove from all images imgClicked class
$("img").removeClass("imgClicked");
//add class to click image element
$(this).addClass("imgClicked");
});
.imgClicked {
border: 1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img src="https://placeholdit.imgix.net/~text?txtsize=19&txt=20%C3%9720&w=20&h=20" />
<img src="https://placeholdit.imgix.net/~text?txtsize=19&txt=20%C3%9720&w=20&h=20" />
<img src="https://placeholdit.imgix.net/~text?txtsize=19&txt=20%C3%9720&w=20&h=20" />
如此简单!您也可以在没有额外 CSS 的情况下做到这一点。
$('.radioImg').on('click', function() {
$('.radioImg').css("border","none")
$(this).css("border","1px solid blue")
});
不知道你是如何让图像进入广播的,下面是一个完整的解决方案:
.HTML。。
<label class="pinLabel"><input type="radio" name="radios" /><img src="abc.jpg" />Label Text </label>
.CSS。。
label.pinLabel > input{
display:none;
}
label.pinLabel > input:checked + img{
border :1px solid red;
}
label.pinLabel > input + img{
cursor:pointer;
/* Rest default properties for image*/
}
label.pinLabel > input + img:hover{
cursor:pointer;
/* Rest default properties for image on hover*/
}
label.pinLabel > input:disabled + img{
cursor: not-allowed;
/* Rest default properties for image when Disabled*/
}
希望对你有帮助
相关文章:
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- jQuery动画-边框宽度和颜色
- 查找带有边框的HTML5 Canvas(点击)事件的坐标
- 边框颜色是't如果输入为空,则更改
- HighCharts:3D柱形图在选择时更改边框颜色
- 当用户向下滚动我的网页时,如何删除chrome地址栏周围的边框
- 单击时如何在按钮周围保留矩形边框
- 数据库条目(缩略图)周围的随机颜色边框(Javascript)
- 如何删除tinymce编辑器周围的边框
- 如何更改每个段落周围的边框<p>部分从下拉列表中动态显示
- 如何使用jQuery在选择框周围设置边框:1px solid #ddd
- 在Raphael JS中绘制论文周围的边框
- 选定图库图像周围的边框
- 我如何能显示红色边框周围文本字段3秒
- 在表中的特定行周围添加边框
- 如何删除边框周围的图像出现后,点击在谷歌浏览器中的图像
- 上次单击的图像周围的边框
- 使用jquery在具有4行或更多行(tr)的表周围放置边框
- 如何在 Fabric .js 中移除对象周围的蓝色边框
- 获取 html DOM 元素内容周围的边框