图像滑块 - 无法在不破坏定位的情况下制作图像链接

时间:2014-04-09 12:43:47

标签: css image slider position

我制作的图像滑块工作正常,直到我尝试将图像制作成链接。 我尝试了几件事,但都遇到了不同的问题。

例如我改变时

<img src="img/radish.jpg" alt="radish">

<a href ="radish.html"><img src="img/radish.jpg" alt="radish"></a>

图像消失,可以通过更改

来修复
.slider li input:checked ~ img{
    opacity: 1;
    visibility: visible;
    z-index: 10;
}   

.slider li input:checked ~ img a{
    opacity: 1;
    visibility: visible;
    z-index: 10;
}

然而,图像不是可点击的链接,我再次找到了通过添加

来解决此问题的方法
.slider li input:checked ~ a{
position: absolute;
}

但在这样做之后,我的标签从滑块底部到滑块上方,我不知道如何修复。

下面是在尝试将图像更改为链接之前的HTML和CSS。如果有人可以帮我找到一种方法来制作图像链接而不改变任何元素的位置,我将永远欠你的债务感谢Bashtoe

HTML

<ul class="slider">
    <li>    
        <input type="radio" id="slide1" name="slide">
        <label for="slide1"></label>
        <img src="img/carrot.jpg" alt="carrot">
    </li>

    <li>
        <input type="radio" id="slide2" name="slide" checked>
        <label for="slide2"></label>
        <img src="img/turnip.jpg" alt="turnip">
    </li>

    <li>
        <input type="radio" id="slide3" name="slide">
        <label for="slide3"></label>
        <img src="img/radish.jpg" alt="radish">
    </li>

    <li>
        <input type="radio" id="slide4" name="slide">
        <label for="slide4"></label>
        <img src="img/parsnip.jpg" alt ="parsnip">
    </li>

    <li>
        <input type="radio" id="slide5" name="slide">
        <label for="slide5"></label>
        <img src="img/leek.jpg" alt="leek">
    </li>

    <li>
        <input type="radio" id="slide6" name="slide">
        <label for="slide6"></label>
        <img src="img/onion.jpg" alt="onion">
    </li>

</ul>

相关CSS

.slider{
height: 480px;
width: 1000px;
padding-bottom: 3.5em;
padding-top: 0.4em;
padding-left:6.2em;
margin:0 auto;
}

.slider li{
    list-style: none;
    position: absolute; 
    /*Creates a two bordered effect*/
    -webkit-box-shadow: 0px 0px 0px 3px #3C7F1E, 0px 0px 0px 6px #4C1F0A; 
    -moz-box-shadow:    0px 0px 0px 3px #3C7F1E, 0px 0px 0px 6px #4C1F0A;
    box-shadow:         0px 0px 0px 3px #3C7F1E, 0px 0px 0px 6px #4C1F0A;
}

.slider img{
    height: 480px;
    width: 800px;
    vertical-align: top;
}

.slider input{
    display:none;
}
.slider label{
    background-color:#3C7F1E;
    bottom: 8px;
    cursor: pointer;
    display: block;
    height: 16px;
    position: absolute;
    width: 16px;
    z-index: 10;
    border: 1px solid gray;
    box-shadow: inset 0px 0px 0px 2px white; /*Gives the button an outer ring */
    -webkit-box-shadow: inset 0px 0px 0px 2px white; /*cross browser compatibility */
   -moz-box-shadow: inset 0px 0px 0px 2px white;
   -o-box-shadow: inset 0px 0px 0px 2px white;
   /*makes the buttons circular */
   -webkit-border-radius: 8px;
   -moz-border-radius: 8px;
   -o-border-radius: 8px;
   border-radius: 8px;
}

.slider li input:checked ~ label{ /*Changes the color of the checked box */
    background: #4C1F0A;

}
/*Sets the distance from the left for the corrisponding button */
.slider li:nth-child(1) label{
    left: 16px;
}

.slider li:nth-child(2) label{
    left: 64px;
}

.slider li:nth-child(3) label{
    left: 112px;    
}
.slider li:nth-child(4) label{
    left: 160px;
}
.slider li:nth-child(5) label{
    left: 208px;
}
.slider li:nth-child(6) label{
    left: 256px;
}

/* Hides the images*/
.slider img{
    opacity: 0;
    visibility: hidden;
}

/*Displays the images when radio buttons are checked, note that the first starts as checked in the html*/
.slider li input:checked ~ img{
    opacity: 1;
    visibility: visible;
    z-index: 10;
}

1 个答案:

答案 0 :(得分:0)

添加后:

.slider li input:checked ~ a{
position: absolute;
}

为li添加一些高度...例如

.slider li{
list-style: none;
position: absolute; 
height: 480px;
/*Creates a two bordered effect*/
-webkit-box-shadow: 0px 0px 0px 3px #3C7F1E, 0px 0px 0px 6px #4C1F0A; 
-moz-box-shadow:    0px 0px 0px 3px #3C7F1E, 0px 0px 0px 6px #4C1F0A;
box-shadow:         0px 0px 0px 3px #3C7F1E, 0px 0px 0px 6px #4C1F0A;
}

这应该固定标签的位置