CSS kullanarak fareyle üzerine gelindiğinde görüntü üzerinde Yakınlaştırma Etkisi mi oluşturuyorsunuz?


87

Şu anda dört resmimden birinin üzerine gelindiğinde bir yakınlaştırma efekti oluşturmaya çalışıyorum. Sorun, çoğu örnekte, bir tür efekt uygulamak için genellikle tablolar veya maskeleme div'leri kullanılmasıdır.

İşte uygular ne istiyorsunuz bu bir örnek bu .

Bu şimdiye kadar benim kodudur.

HTML

<div id="menu">
<img class ="blog" src="http://s18.postimg.org/il7hbk7i1/image.png" alt="">
<img class ="music" src="http://s18.postimg.org/4st2fxgqh/image.png" alt="">
<img class ="projects" src="http://s18.postimg.org/sxtrxn115/image.png" alt="">
<img class ="bio" src="http://s18.postimg.org/5xn4lb37d/image.png" alt="">
</div>

CSS

#menu {
    max-width: 1200px;
    text-align: center;
    margin: auto;
}

#menu img {
    width: 250px;
    height: 375px;
    padding: 0px 5px 0px 5px;
    overflow: hidden;
}

.blog {
    height: 375px;
    -webkit-transition: all 1s ease;
    -moz-transition: all 1s ease;
    -o-transition: all 1s ease;
    -ms-transition: all 1s ease;
    transition: all 1s ease;
}

.blog:hover {
    cursor: pointer;
    height:475px;
    width: 350px;
}

.music {
    height: 375px;
}

.projects {
    height: 375px;
}

.bio {
    height: 375px;
}

Yanıtlar:


165

Peki ya zum gibi bir etki yaratan CSS3 transformmülk kullanımı ve kullanım scale, şu şekilde yapılabilir,

HTML

<div class="thumbnail">
    <div class="image">
        <img  src="http://placehold.it/320x240" alt="Some awesome text"/>
    </div>
</div>

CSS

.thumbnail {
    width: 320px;
    height: 240px;
}

.image {
    width: 100%;
    height: 100%;    
}

.image img {
    -webkit-transition: all 1s ease; /* Safari and Chrome */
    -moz-transition: all 1s ease; /* Firefox */
    -ms-transition: all 1s ease; /* IE 9 */
    -o-transition: all 1s ease; /* Opera */
    transition: all 1s ease;
}

.image:hover img {
    -webkit-transform:scale(1.25); /* Safari and Chrome */
    -moz-transform:scale(1.25); /* Firefox */
    -ms-transform:scale(1.25); /* IE 9 */
    -o-transform:scale(1.25); /* Opera */
     transform:scale(1.25);
}

İşte bir demo keman . Daha basit hale getirmek için bazı öğeleri kaldırdım .image, ölçeklenen görüntünün taşmasını gizlemek için her zaman gizlenmiş taşma ekleyebilirsiniz .

zoom mülkiyet yalnızca IE'de çalışır


14
Ve "koddan derin yaşam dersleri" ödülünü kazanan CSS'niz "Her şey kolay, her şey kolay" diye bağırıyor.
Nerrolken

1
Pikselleşmeyi nasıl engellersiniz?
Waltari

1
@Waltari Resminizin boyutu içerik alanından% 25 (yakınlaştırdığımız miktar) daha büyük olmalıdır; bu nedenle, küçük resim 320x240 ise ve% 25 yakınlaştırıyorsak resmin 400x300 olması gerekir.
Mitchell Layzell

25

Hadi bakalım.

Demo

http://jsfiddle.net/27Syr/4/

HTML

<div id="menu">

    <div class="fader">
        <div class="text">
            <p>Yay!</p>
        </div>
        <a href="http://stackoverflow.com/questions/15732643/jquery-masonry-and-css3/">
            <img class ="blog" src="http://s18.postimg.org/il7hbk7i1/image.png" alt="">
        </a>
    </div>

    <div class="fader">
        <div class="text">
            <p>Yay!</p>
        </div>
        <a href="http://stackoverflow.com/questions/15732643/jquery-masonry-and-css3/">
            <img class ="blog" src="http://s18.postimg.org/4st2fxgqh/image.png" alt="">
        </a>
    </div>

    <div class="fader">
        <div class="text">
            <p>Yay!</p>
        </div>
        <a href="http://stackoverflow.com/questions/15732643/jquery-masonry-and-css3/">
            <img class ="projects" src="http://s18.postimg.org/sxtrxn115/image.png" alt="">
        </a>
    </div>

    <div class="fader">
        <div class="text">
            <p>Yay!</p>
        </div>
        <a href="http://stackoverflow.com/questions/15732643/jquery-masonry-and-css3/">
            <img class ="blog" src="http://s18.postimg.org/5xn4lb37d/image.png" alt="">
        </a>
    </div>

</div>

CSS

#menu {
    text-align: center; }


.fader {
    /* Giving equal sizes to each element */
    width:    250px;
    height:   375px;

    /* Positioning elements in lines */
    display:  inline-block;

    /* This is necessary for position:absolute to work as desired */
    position: relative;

    /* Preventing zoomed images to grow outside their elements */
    overflow: hidden; }


    .fader img {
        /* Stretching the images to fill whole elements */
        width:       100%;
        height:      100%;

        /* Preventing blank space below the image */
        line-height: 0;

        /* A one-second transition was to disturbing for me */
        -webkit-transition: all 0.3s ease;
        -moz-transition:    all 0.3s ease;
        -o-transition:      all 0.3s ease;
        -ms-transition:     all 0.3s ease;
        transition:         all 0.3s ease; }

        .fader img:hover {
            /* Making images appear bigger and transparent on mouseover */
            opacity: 0.5;
            width:   120%;
            height:  120%; }

    .fader .text {
        /* Placing text behind images */
        z-index: -10;     

        /* Positioning text top-left conrner in the middle of elements */
        position: absolute;
        top:      50%;
        left:     50%; }

        .fader .text p {
            /* Positioning text contents 50% left and top relative
               to text container's top left corner */
            margin-top:  -50%; 
            margin-left: -50%; }

Öneri

.fader { inline-block; }Bir ızgara sistemi kullanmak yerine . Tercih ettiğiniz teknolojiye göre Foundation , Susy , Masonry veya alternatiflerine gidebilirsiniz .


19
.aku { 
    transition: all .2s ease-in-out; 
}

.aku:hover {
    transform: scale(1.1); 
}

16

Arka plan resmi kullanmayı seviyorum. Bunu daha kolay ve daha esnek buluyorum:

DEMO

CSS:

#menu {
    max-width: 1200px;
    text-align: center;
    margin: auto;
}
.zoomimg {
    display: inline-block;
    width: 250px;
    height: 375px;
    padding: 0px 5px 0px 5px;
    background-size: 100% 100%;
    background-repeat: no-repeat;
    background-position: center center;
    transition: all .5s ease;
}
.zoomimg:hover {
    cursor: pointer;
    background-size: 150% 150%;
}
.blog {
    background-image: url(http://s18.postimg.org/il7hbk7i1/image.png);
}
.music {
    background-image: url(http://s18.postimg.org/4st2fxgqh/image.png);
}
.projects {
    background-image: url(http://s18.postimg.org/sxtrxn115/image.png);
}
.bio {
    background-image: url(http://s18.postimg.org/5xn4lb37d/image.png);
}

HTML:

<div id="menu">
    <div class="blog zoomimg"></div>
    <div class="music zoomimg"></div>
    <div class="projects zoomimg"></div>
    <div class="bio zoomimg"></div>
</div>

Yer Paylaşımlı DEMO 2


Bunun için bir arka plan resmi kullanmanızı önermem, bir resim etiketi ve alt öznitelikleri kullanarak gelen tüm harika görsel SEO'yu kaybedeceksiniz.
Mitchell Layzell

Bunun harika olduğunu düşünüyorum, ancak img etiketinin tüm işlevlerini kaybediyorsunuz.
Daniel Naab

Görsel SEO ile alakalı değilse, bu çözümü daha temiz buldum.
NLemay

7

Basitçe:

.grow { transition: all .2s ease-in-out; }

Bu, öğenin css aracılığıyla bir animasyon atamasına izin verecektir.

.grow:hover { transform: scale(1.1); }

Bu onu büyütecek!



4

ÇÖZÜM 1: Zoom-master'ı indirebilirsiniz .
ÇÖZÜM 2: Buraya gidin .
ÇÖZÜM 3: Kendi kodlarınız

.hover-zoom {
    -moz-transition:all 0.3s;
    -webkit-transition:all 0.3s;
     transition:all 0.3s
 }
.hover-zoom:hover {
    -moz-transform: scale(1.1);
    -webkit-transform: scale(1.1);
     transform: scale(1.5)
 }
<img class="hover-zoom"  src="https://i.stack.imgur.com/ewRqh.jpg" 
     width="100px"/>



0
 -webkit-transition: all 1s ease; /* Safari and Chrome */
-moz-transition: all 1s ease; /* Firefox */
-ms-transition: all 1s ease; /* IE 9 */
-o-transition: all 1s ease; /* Opera */
transition: all 1s ease;  

sadece yukarıdaki geçişler hakkında bir not almak istiyorum

 -webkit-transition: all 1s ease; /* Safari and Chrome */
transition: all 1s ease;

ve -ms- kesinlikle IE 9 için çalışmıyor, bu fikri nereden aldığınızı bilmiyorum.


IE10 (IE'nin geçişi destekleyen ilk kararlı sürümü) -ms- önekini gerektirmez, önceki kararsız yapılar gerektirir ve aynısı -moz- ve -o- için de geçerlidir, mevcut sürümler gerektirmez, ancak önceki derlemeler gerektirir.
Mitchell Layzell

-ms-, herhangi bir IE tarayıcısının işe geçişi sağlaması için bir çözüm sunmadığından tamamen gerekli değildir. Öneki, işe yarayacak belirli kuralı elde etmek için kullanırsınız, bunları sadece eğlence için atmazsınız.
DCdaz

-ms- isimli bir satıcı öneki hala birçok insan ne yazık ki söz konusu artık zaman, bu güne kadar IE 9 kullanmak satıcı öneki kullanmak IE 9 gibi önceki sürümleri anlamına IE 10 serbest bırakılması üzerine düştüğünü transitionIE resmen getirilen mülkiyet transitioniçinde IE 10 bu yüzden onu gerektirmez, ancak% 100 olmak istiyorsanız, IE 9'un kararsız sürümleri vardır -ms-transition.
Mitchell Layzell

1
Bu yanlış geçişler, IE9'da satıcı önekiyle çalışmaz. -ms- geçişler için tamamen anlamsız bir önek.
DCdaz

1
-Ms- her yerde -o- opera cep telefonunda geçişleri gerçekten çalıştırmıyor, bu yüzden anlamsız ve -moz- hızlı bir şekilde art arda gelen 2011 sürümleri için anlamsız çünkü tam anlamıyla bunu yapacak küçük bir avuç kullanıcıdan bahsediyorsunuz. % 100, web'i genel bir kullanıcı olarak değil, platform amaçları için kullanan geliştiriciler ve kurumlar olabilir. Ancak yine de ana argüman -ms- tamamen yararsızdır ve en ufak bir şekilde gerekli değildir. -moz- veya -o için gerek yoktur Ve -ms- gerek 100% var
DCdaz

0

    .img-wrap:hover img {
        transform: scale(0.8);
    }
    .img-wrap img {
        display: block;
        transition: all 0.3s ease 0s;
        width: 100%;
    }
    <div class="img-wrap">
    <img src="http://www.sampleimages/images.jpg"/> // Your image
    </div>

Bu kod yalnızca uzaklaştırma efekti içindir. Div "img-wrap" öğesini stillerinize göre ayarlayın ve yukarıdaki stil sonuçlarını uzaklaştırma efektini ekleyin. Yakınlaştırma efekti için ölçek değerini artırmanız gerekir (örn: yakınlaştırma için içinde, dönüşümü kullanın: scale (1.3);


0
  <div class="item">
  <img src="yamahdi1.jpg" alt="pepsi" width="50" height="58">
  <img src="yamahdi.jpg" alt="pepsi" width="50" height="58">
  <div class="item-overlay top"></div>

css:

.item img {

  -moz-transition: all 0.3s;
  -webkit-transition: all 0.3s;
  transition: all 0.3s;
}
.item img:hover {
  -moz-transform: scale(1.1);
  -webkit-transform: scale(1.1);
  transform: scale(1.1);
}

0

@import url('https://fonts.googleapis.com/css?family=Muli:200,300,400,700&subset=latin-ext');
 body{ font-family: 'Muli', sans-serif; color:white;}
 #lists {
   width: 350px;
   height: 460px;
   overflow: hidden;
   background-color:#222222;
   padding:0px;
   float:left;
    margin: 10px;
 }
 
 .listimg {
   width: 100%;
   height: 220px;
   overflow: hidden;
   float: left;
  
 }
  #lists .listimg img {
   width: 350px;
   height: 220px;
   -moz-transition: all 0.3s;
   -webkit-transition: all 0.3s;
   transition: all 0.3s;
 }
 #lists:hover{cursor: pointer;}
 #lists:hover > .listimg img {
   -moz-transform: scale(1.3);
   -webkit-transform: scale(1.3);
   transform: scale(1.3);
   -webkit-filter: blur(5px);
   filter: blur(5px);
 }

#lists h1{margin:20px; display:inline-block; margin-bottom:0px; }
#lists p{margin:20px;}

.listdetail{ text-align:right; font-weight:200; padding-top:6px;padding-bottom:6px;}
<div id="lists">
<div class="listimg">
  <img src="https://lh3.googleusercontent.com/WeEw5I-wk2UO-y0u3Wsv8MxprCJjxTyTzvwdEc9pcdTsZVj_yK5thdtXNDKoZcUOHlegFhx7=w1920-h914-rw">
</div>
<div class="listtext">
<h1>Eyes Lorem Impsum Samet</h1>
<p>Impsum Samet Lorem</p>
</div>
<div class="listdetail">
<p>Click for More Details...</p>
</div>
</div>

<div id="lists">
<div class="listimg">
  <img src="https://lh4.googleusercontent.com/fqK7aQ7auobK_NyXRYCsL9SOpVj6SoYqVlgbOENw6IqQvEWzym_3988798NlkGDzu0MWnR-7nxIhj7g=w1920-h870-rw">
</div>
<div class="listtext">
<h1>Two Frogs Lorem Impsum Samet</h1>
<p>Impsum Samet Lorem</p>
</div>
<div class="listdetail">
<p>More Details...</p>
</div>
</div>


0
<!DOCTYPE html>
<html>
<head>
<style>
.zoom {

  overflow: hidden;
}

.zoom img {
  transition: transform .5s ease;
}
.zoom:hover img {
  transform: scale(1.5);
}

</style>
</head>
<body>

<h1>Image Zoom On Hover</h1>
<div class="zoom">
  <img src="/image-path-url" alt="">
</div>

</body>
</html>

Cevabınızı düşük kaliteli gönderiden çıkarmak için bazı açıklamalar ekleyin.
Harsha Biyani

-3

Jquery.zbox.css ve jquery.zbox.js ile birlikte jQuery JavaScript kitaplığını web sayfanıza ekleyin.

<link rel="stylesheet" href="jquery.zbox.css">
<script src="jquery.min.js"></script>
<script src="jquery.zbox.min.js"></script>

Web sayfasına tam boyutlu görüntülere işaret eden bağlantılar içeren bir grup küçük resim ekleyin.

<a class="zb" rel="group" href="1.png" title="Image 1">
  <img src="thumb1.png">
</a>
<a class="zb" rel="group" href="2.png" title="Image 2">
  <img src="thumb2.png">
</a>
<a class="zb" rel="group" href="3.png" title="Image 3">
 <img src="thumb3.png">
</a>

İşlevi hazır belgede çağırın. Bu kadar.

Görünüm kaynağında şunları yapın:

$(".zb").zbox();

2
OP bunu CSS'de yapmanın bir yolunu istedi. Bir jQuery yanıtı burada yardımcı olmaz.
TylerH
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.