首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理边框颜色的CSS技巧

管理边框颜色的CSS技巧
EN

Stack Overflow用户
提问于 2014-06-03 19:29:42
回答 4查看 141关注 0票数 0

我想做的事情应该很简单,但我不知道有什么技巧或方法来完成它。

我的页面上有一个元素。带有一类“食品”的100x100除尘器

当你悬停时,它会得到蓝色的边框。

当您单击时,它将得到一个永久的绿色边框。

问题是:悬停和基本类别正在竞争。我希望:悬停只应用于元素,而不使用..fooditem-选择的类。

这是一个用来玩的小提琴。这基本上是我想要的,但我知道我使用的是相互冲突的css规则:http://jsfiddle.net/96BHd/2/

有一个简单的修复或欺骗,我忽略了吗?

CSS

代码语言:javascript
复制
.fooditem {
    width: 100px;
    height: 100px;
    border: 1px solid grey;
}

.fooditem:hover {
    transition: .5s;
    box-shadow: inset 0 0 0 6px #4F91FF;
}

.fooditem-selected {
    transition: .5s;
    box-shadow: inset 0 0 0 6px #6dff70;
}

.fooditem-selected:hover {
    box-shadow: inset 0 0 0 6px #6dff70;
}

JS

代码语言:javascript
复制
$(".fooditem").click(function(){
    if($(this).hasClass("fooditem-selected")){
        $(this).removeClass("fooditem-selected");
    } else {
        $(this).addClass("fooditem-selected");
    }
});
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-06-03 22:18:05

http://jsfiddle.net/96BHd/7/

简化CSS和Javascript。使用:not()来防止多余的类。你真的不需要供应商在盒子阴影(http://css-tricks.com/do-we-need-box-shadow-prefixes/)上加上前缀。

JS

代码语言:javascript
复制
$(".fooditem").click(function () {
 $(this).toggleClass("selected");
});

CSS

代码语言:javascript
复制
.fooditem{
    width: 100px;
    height: 100px;
    border: 1px solid grey;
    float:left;
    -webkit-transition: .2s;
    transition: .5s;
}
.fooditem:not(.selected):hover {
    box-shadow:inset 0px 0px 0px 6px #4F91FF;
}
.fooditem.selected {
    box-shadow:inset 0px 0px 0px 6px #6dff70;
}
票数 3
EN

Stack Overflow用户

发布于 2014-06-03 22:14:51

根据您要寻找的浏览器支持,您可以使用:not()伪选择器。这是一个CSS3选择器,所以caniuse.com说它应该在IE9+和所有非IE浏览器上工作。如果您需要更多的支持,您可能会得到它的选择器垫片。

使用它:

代码语言:javascript
复制
.fooditem:not(.fooditem-selected):hover
票数 1
EN

Stack Overflow用户

发布于 2014-06-03 19:38:53

你拥有它的方式没有什么特别的问题,我甚至不会认为它是一个黑客,因为你使用的是基本的CSS。然而,我是一个有消极状态的球迷。

代码语言:javascript
复制
.fooditem{
}

.fooditem-notselected {
}

.fooditem-notselected:hover {
}

.fooditem-selected {
}

并使用toggleClass()

代码语言:javascript
复制
$(".fooditem").click(function(){
  $(this).toggleClass("fooditem-notselected")
    .toggleClass("fooditem-selected");

  // or .toggleClass("fooditem-notselected fooditem-selected");
});

这些样式更具描述性,因此应该更容易理解,特别是对于第一次查看您的代码的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24023419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档