在CSS灯箱中放大图像

时间:2014-09-16 02:06:07

标签: css html5 image lightbox

作为CSS的新手,我还处于学习阶段,所以请耐心等待。我有一个完全用CSS构建的灯箱,我想生成比当前显示的更大的图像(灯箱内的图像,而不是主页上的缩略图),但是想不出任何方法来实现这一点!

直播网站:http://contractoptions.com/gallery2.html

HTML:

<ul class="gallery">
<li>
    <a href="#img1"><img src="thumb-01.jpg" alt="Image 1 Thumb"></a>
    <article id="img1">
        <figure>
            <a href="#img2"><img src="img01.jpg" alt="Image 1"></a>
        </figure>
        <nav>
            <a class="close" href="#close">Close</a>
            <a class="arrow prev" href="#img25">Previous</a>
    <a class="arrow next" href="#img2">Next</a>
        </nav>
    </article>
</li>

CSS:

/ * -----图库页面----- * /

.container {
width: 110%;
padding: 0 4%;
}

h1 {
    font-weight: normal;
    font-style: italic;
    text-align: center;
    margin: 5px 0 20px;
}

figure {
    margin: 0;
    height: 50%
}

ul {
    list-style: none;
    padding: 0;
}

a img {
    border: none;
}

.gallery {
    max-width: 700px;
    padding: 15px;
    background: #666;
    border-radius: 10px;
    margin: 0 auto;
    border: 15px #98b277;
    box-shadow: 0 0 20px rgba(0, 0, 0, .5);
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
}

.gallery:after {
    content: "";
    display: block;
    clear: both;
}

    .gallery li {
        float: right;
        width: 18%;
        margin: 1%;
    }

        .gallery li > a {
            float: right;
            width: 100%;
            -webkit-filter: grayscale(.5) sepia(.8);
            -webkit-transition: .5s;
            transition: .5s;
            position: relative;
            -webkit-transform: translateZ(0);
        }

            .gallery li > a img {
                max-width: 100%;
                float: right;
                display: block;
                box-shadow: 0 0 5px rgba(0, 0, 0, .3);
                -webkit-transition: .5s;
                transition: .5s;
            }

            .gallery li > a:hover {
                -webkit-filter: grayscale(0) sepia(0);
                z-index: 1;
            }

            .gallery li > a img:hover {
                -webkit-transform: scale(1.4);
                -ms-transform: scale(1.4);
                transform: scale(1.4);
                box-shadow: 0 0 15px rgba(0, 0, 0, .8);
            }

        .gallery article {
            width: 0;
            height: 0;
            overflow: hidden;
            position: fixed;
            top: 0;
            left: 0;
        }

        .gallery article:target {
            width: 100%;
            height: 100%;
            padding: 100px 0;
            -webkit-box-sizing: border-box;
            -moz-box-sizing: border-box;
            box-sizing: border-box;
            margin: 0;
            text-align: center;
            background: rgba(0, 0, 0, .7);
            z-index: 1000;
        }    

            .gallery article figure {
                height: 100%;
            }

            .gallery article img {
                opacity: 0;
                -webkit-transition: .7s;
                transition: .7s;
                border: 10px solid #fff;
                max-height: 100%;
                max-width: 100%;
                -webkit-box-sizing: border-box;
                -moz-box-sizing: border-box;
                box-sizing: border-box;
                box-shadow: 0 0 20px rgba(0, 0, 0, .5);
            }

            .gallery article:target img {
                opacity: 1;
            }

            .gallery figcaption {
                background: rgba(250, 250, 250, .1);
                padding: 5px 10px;
                font-size: 1.3em;
                font-style: italic;
                color: #999;
                margin-top: 20px;
            }

                article .close {
                    position: absolute;
                    left: 50%;
                    top: 40px;
                    margin-left: -50px;
                    width: 100px;
                    background: rgba(250, 250, 250, .9);
                    color: #333;
                    border-radius: 15px;
                    text-decoration: none;
                    padding: 6px 6px 6px 25px;
                    -webkit-box-sizing: border-box;
                    -moz-box-sizing: border-box;
                    box-sizing: border-box;
                    text-transform: uppercase;
                    -webkit-transition: .5s;
                    transition: .5s;
                }

                    article .close:before {
                        content: "X";
                        color: #fff;
                        font-family: Arial;
                        font-weight: bold;
                        position: absolute;
                        padding-top: 3px;
                        top: 3px;
                        left: 5px;
                        width: 24px;
                        height: 21px;
                        background: #666;
                        border-radius: 50%;
                    }

                    article .close:hover {
                        background: #fff;
                    }

                article .arrow {
                    position: absolute;
                    top: 250px;
                    width: 0;
                    height: 0;
                    border-top: 40px solid transparent;
                    border-bottom: 40px solid transparent;
                    text-indent: -9999px;
                    -webkit-transition: .4s;
                    transition: .4s;
                }

                article .prev {
                    left: 50%;
                    margin-left: -35%;
                    border-right: 60px solid rgba(250, 250, 250, .1);
                }

                article .prev:hover {
                    border-right-color: rgba(250, 250, 250, .2);
                }

                article .next {
                    right: 50%;
                    margin-right: -35%;
                    border-left: 60px solid rgba(250, 250, 250, .1);
                }

                article .next:hover {
                    border-left-color: rgba(250, 250, 250, .2);
                }


@media screen and (max-width:1100px) {

article .arrow {
    top: 36px;
    border-top: 20px solid transparent;
    border-bottom: 20px solid transparent;
}

article .prev {
    margin-left: -130px;
    border-right: 40px solid rgba(250, 250, 250, .3);
}

article .next {
    margin-right: -130px;
    border-left: 40px solid rgba(250, 250, 250, .3);
}

}

@media screen and (max-width:600px) {

h1 {
    font-size: 1.4em;
}

.gallery li {
    width: 23%;
}

}

@media screen and (max-width:450px) {

h1 {
    font-size: 1.2em;
}

.gallery li {
    width: 31%;
}

}

@media screen and (max-width:350px) {

h1 {
    font-size: 1.2em;
}

.gallery li {
    width: 48%;
}

}

2 个答案:

答案 0 :(得分:0)

我为你建立了一个快速Codepen。我只是插入一些占位符图像,无论我使用什么尺寸的图像,它都不受CSS的限制。我的建议?只需上传更大的图片要摆弄我的设置,请配置placehold.it图像,如下所示:

<img src="http://placehold.it/200x200">

200x200可以是您喜欢的任何尺寸。

此处更新了以下内容:

起初,我以为你想增加光箱图像的大小。但是现在我认为你可能正在讨论图库中图像的大小,这些图像受CSS声明的限制:

.gallery li > a img{
    max-width: 100%;
}

因此,您图库中的图片将无法超过其父级宽度的100%。

答案 1 :(得分:0)

您可以利用以下事实:根据页面中哪个锚点处于活动状态,可以定位CSS:

<figure id="image-01-in-document">
    <a href="#show-01-in-lightbox">
        <img alt="Some thumbnail" src="/_res/thumb/01.jpg" />
        <p>Some Thumbnail's caption.</p>
    </a>
</figure>

当有人点击缩略图时,任何ID为show-01-in-lightbox的内容都会生效。在这里你可以放置更大的图像。我们使用ID为figure的{​​{1}}返回灯箱的缩略图:

image-01-in-document

我们需要的只是一些CSS可以挂钩<aside class="lightbox" id="show-01-in-lightbox"> <a href="#image-01-in-document"> <img alt="Some big image" src="/_res/fullsize/01.jpg" /> <p>Some Lightbox's caption.</p> </a> </aside> image-01-in-document的有效/无效状态:

show-01-in-lightbox

默认情况下,灯箱图像是隐藏的。但是,如果您单击缩略图,则会激活aside.lightbox { display: none; position: fixed; top: 0; left: 0; width: 0; height: 0; overflow: hidden; } aside.lightbox:target { display: block; width: 100%; height: 100%; overflow: scroll; } 并突然显示灯箱图像。可以添加转换等。您只需要在文档末尾的每个灯箱图像的旁边。

至少,这是我对仅限CSS的灯箱的解释。