CSS盒子阴影过渡

时间:2014-03-17 02:53:04

标签: jquery html css

我的网站上有几个div元素,它们是具有插入框阴影的类的一部分。当我将鼠标悬停在那些div框上时,我希望从box-shadow中删除inset属性,并且我希望它转换为向外阴影。但是,虽然阴影正确更改,但在更改期间不会转换。它只是瞬间切换阴影。我该如何解决这个问题?

这是HTML:

<header>

    <div id="header-stuff">

        <p class="header-big">Green Homes 101</p>

        <div id="header-links">

            <div class="header-link">
                <a href="alt-en.html#top">
                    <img src="images/index/alt-en.svg" alt="Alternate Energy" />
                    <p>Alternate Energy</p>
                </a>
            </div>

            <div class="header-link">
                <a href="diy.html#top">
                    <img src="images/index/diy.svg" alt="DIY" />
                    <p>DIY</p>
                </a>
            </div>

            <div class="header-link">
                <a href="buying.html#top">
                    <img src="images/index/buying.svg" alt="Buying Green Homes" />
                    <p>Buying Green Homes</p>
                </a>
            </div>

            <div class="header-link">
                <a href="about.html#top">
                    <img src="images/index/about.svg" alt="About Us" />
                    <p>About Us</p>
                </a>
            </div>

        </div>

    </div>

</header>

这是CSS:

.header-link {
    display: inline-block;
    background-color: rgba(50, 125, 42, 0.75);
    margin: 1%;
    overflow: hidden;
    border-radius: 10%;
    box-shadow:0 0 10px rgba(0, 0, 0, 0.7) inset;

    -ms-transition: all .25s linear;
    -moz-transition: all .25s linear;
    -webkit-transition: all .25s linear;
    -o-transition: all .25s linear;
}

.header-link > a {
    display: block;
    width: 100%;
    height: 100%;
    color: rgba(10, 85, 2, 0.35);
    text-shadow: 1px 4px 6px rgba(33, 108, 25, 0.85), 0 0 0 #000, 1px 4px 6px rgba(33, 108, 25, 0.85);
    border-radius: 10%;
}

.header-link > a > img {
    display: block;
    width: 100%;
    height: 80%;
}

.header-link:hover {
    background-color: #1e9cd7;
    box-shadow:0 0 10px rgba(0, 0, 0, 0.7);

    -ms-transition: all .25s linear;
    -moz-transition: all .25s linear;
    -webkit-transition: all .25s linear;
    -o-transition: all .25s linear;
}

1 个答案:

答案 0 :(得分:7)

您无法从普通框阴影转换为插入框阴影。

幸运的是,您可以设置多个框阴影,这样就可以编写

.header-link {
    box-shadow:0 0 10px rgba(0, 0, 0, 0.7) inset, 0px 0px 0px white;
}

.header-link:hover {
    box-shadow: 0px 0px 0px white inset, 0 0 10px rgba(0, 0, 0, 0.7);
}

请注意,这些阴影与您拥有的阴影相同,因为额外的阴影具有0px,因此不会显示。另请注意,顺序很重要:只有第一个阴影插入(或正常)时,浏览器才会转换它,第二个阴影插入(或正常),依此类推

fiddle

我已经删除了悬停状态下的转换,您不需要重复它们。