Productoverzicht weergave als IKEA

VN:F [1.9.17_1161]
Rating: 3.5/5 (2 votes cast)

De IKEA website heeft een vernieuwde weergave van de productoverzicht pagina’s. Op het eerste gezicht lijkt er niks verandert, maar als je met je muis over een product gaat krijg je meer informatie over dat product te zien. In deze tutorial ga ik je laten zien hoe jij dat effect kunt nabootsen.

Grid view

Als eerste hebben we een standaard grid view, gevuld met producten, nodig voor de product-overzicht pagina.

<ul id="products">
<li class="product">
<div class="info">
<div class="prod-info">
                <img src="stoel.jpg" width="100" alt="Stoel" />
<h2 class="prod-title">Stoel</h2>
<p class="prod-desc">Een bruin leren stoel
<p class="prod-price">&euro; 250,-
<div class="prod-more-info">
<hr noshade="noshade" />
<h3>Extra informatie</h3>

Lorem ipsum dolor sit amet.

<a href="#product" class="prod-link">Product bekijken &raquo;</a>
</div>
</div>
</div>
</li>
<li class="product">
<div class="info">
<div class="prod-info">
                <img src="stoel.jpg" width="100" alt="Stoel" />
<h2 class="prod-title">Stoel</h2>
<p class="prod-desc">Een bruin leren stoel
<p class="prod-price">&euro; 250,-
<div class="prod-more-info">
<hr noshade="noshade" />
<h3>Extra informatie</h3>

Lorem ipsum dolor sit amet.

<a href="#product" class="prod-link">Product bekijken &raquo;</a>
</div>
</div>
</div>
</li>
<li class="product">
<div class="info">
<div class="prod-info">
                <img src="stoel.jpg" width="100" alt="Stoel" />
<h2 class="prod-title">Stoel</h2>
<p class="prod-desc">Een bruin leren stoel
<p class="prod-price">&euro; 250,-
<div class="prod-more-info">
<hr noshade="noshade" />
<h3>Extra informatie</h3>

Lorem ipsum dolor sit amet.

<a href="#product" class="prod-link">Product bekijken &raquo;</a>
</div>
</div>
</div>
</li>
<li class="product">
<div class="info">
<div class="prod-info">
                <img src="stoel.jpg" width="100" alt="Stoel" />
<h2 class="prod-title">Stoel</h2>
<p class="prod-desc">Een bruin leren stoel
<p class="prod-price">&euro; 250,-
<div class="prod-more-info">
<hr noshade="noshade" />
<h3>Extra informatie</h3>

Lorem ipsum dolor sit amet.

<a href="#product" class="prod-link">Product bekijken &raquo;</a>
</div>
</div>
</div>
</li>
<li class="product last">
<div class="info">
<div class="prod-info">
                <img src="stoel.jpg" width="100" alt="Stoel" />
<h2 class="prod-title">Stoel</h2>
<p class="prod-desc">Een bruin leren stoel
<p class="prod-price">&euro; 250,-
<div class="prod-more-info">
<hr noshade="noshade" />
<h3>Extra informatie</h3>

Lorem ipsum dolor sit amet.

<a href="#product" class="prod-link">Product bekijken &raquo;</a>
</div>
</div>
</div>
</li>
</ul>

Voor het gemak heb ik vijf keer hetzelfde product gebruikt (het wordt dus een grid-view met 5 producten op een rij).
Het laatste product heeft niet alleen de class product (de li), maar ook de class last.

Opmaak

Om het geheel te laten werken hebben we ook stijling nodig. Er komt dus geheel geen JavaScript aan te pas! :)

ul#products
{
  margin:0 0 2em;
}

ul#products li.product
{
  width:19.8%;
  height:200px;
  display:inline;
  float:left;
  border-right:1px solid #eee;
  position:relative;
  <a title="Zie ook Meerdere achtergronden" href="http://hiranthi.nl/tutorials/meerdere-achtergronden/">background</a>:#fff;
  margin:0 0 2em;
}

ul#products li.product:hover
{
  border-right-color:#fff;
  z-index:9;
}

ul#products li.product .info
{
  display:block;
  background:#fff;
}

ul#products li.product .prod-info
{
  padding:1.1em;
}

ul#products li.product .info:hover .prod-info
{
  -moz-box-shadow:0 0 .5em #888;
  -webkit-box-shadow:0 0 .5em #888;
  box-shadow:0 0 .5em #888;
  filter:progid:DXImageTransform.Microsoft.dropShadow(color=#969696, offx=1, offy=1, positive=true)
    progid:DXImageTransform.Microsoft.dropShadow(color=#C2C2C2, offx=1, offy=1, positive=true)
    progid:DXImageTransform.Microsoft.dropShadow(color=#EFEFEF, offx=1, offy=1, positive=true);/* <= IE7 */
  -ms-filter:"progid:DXImageTransform.Microsoft.dropShadow(color=#969696, offx=1, offy=1, positive=true)
    progid:DXImageTransform.Microsoft.dropShadow(color=#C2C2C2, offx=1, offy=1, positive=true)
    progid:DXImageTransform.Microsoft.dropShadow(color=#EFEFEF, offx=1, offy=1, positive=true)"; /* >= IE8 */
  padding:1em;
  border:1px solid #eee;
}

ul#products li.product img
{
  margin:0 auto 5px;
  display:block;
}

ul#products li.product h2
{
  text-transform:uppercase;
  margin:0 0 .5em;
  padding:.5em 0;
  font-size:1.4em;
}

ul#products li.product p
{
  font-size:1.2em;
  margin:0 0 .5em;
  line-height:1.4em;
}

ul#products li.product p.prod-price
{
  font-weight:bold;
  font-size:1.6em;
  line-height:1.8em;
}

ul#products li.last
{
  border:none;
}

ul#products li.product a.prod-link
{
  text-decoration:none;
  color:darkturquoise;
}

ul#products li.product .prod-more-info
{
  display:none;
}

ul#products li.product .info:hover .prod-more-info
{
  display:block;
  width:100%;
}

De z-index:9; op ul#products li.product:hover zorgt ervoor dat de li boven andere elementen gezet wordt. Werkt deze niet bij jou? Dan kan het zijn dat het element (waar deze overheen moet gaan) een hogere z-index heeft. Je kunt de z-index zo hoog maken als je zelf wil (hou wel rekening met evt. Lightbox varianten, zij gebruiken ook een z-index om boven alle elementen te komen).

CSS3

Voor de schaduw maak ik gebruik van CSS3 in plaats van afbeeldingen:

-moz-box-shadow:0 0 .5em #888;
-webkit-box-shadow:0 0 .5em #888;
box-shadow:0 0 .5em #888;

In Internet Explorer wordt CSS3 (nog) niet ondersteund. IE heeft wel filters die eenzelfde resultaat geven (maar deze komen niet door de W3C validatie heen):

filter:progid:DXImageTransform.Microsoft.dropShadow(color=#969696, offx=1, offy=1, positive=true)
  progid:DXImageTransform.Microsoft.dropShadow(color=#C2C2C2, offx=1, offy=1, positive=true)
  progid:DXImageTransform.Microsoft.dropShadow(color=#EFEFEF, offx=1, offy=1, positive=true);/* <= IE7 */
-ms-filter:"progid:DXImageTransform.Microsoft.dropShadow(color=#969696, offx=1, offy=1, positive=true)
  progid:DXImageTransform.Microsoft.dropShadow(color=#C2C2C2, offx=1, offy=1, positive=true)
  progid:DXImageTransform.Microsoft.dropShadow(color=#EFEFEF, offx=1, offy=1, positive=true)"; /* >= IE8 */

Online demo

Natuurlijk heb ik ook een demo online gezet: IKEA product (grid view) nabootsing.

Productoverzicht weergave als IKEA, 3.5 out of 5 based on 2 ratings
  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

8 Responses to Productoverzicht weergave als IKEA
  1. Denthaman Beantwoorden

    Bedankt voor deze tutorial. Het viel me echter wel op dat het er in IE 8 niet zo denderend uitziet.

    Is dat nog simpel op te lossen?

    VA:F [1.9.17_1161]
    Rating: 0 (from 0 votes)
    • hiranthi Beantwoorden

      Ik heb nou geen mogelijkheid om in IE8 te kijken, zou je anders een screenshot kunnen maken en die naar me toe kunnen sturen? (of link hier neer zetten).

      VA:F [1.9.17_1161]
      Rating: 0 (from 0 votes)
    • hiranthi Beantwoorden

      Bedankt voor je screenshot. Het lijkt erop dat IE de shadow van de container ook aan alle child-elementen geeft. Ik heb de volgende code niet getest (zit op m’n MacBook), maar dit zou moeten werken:

      ul#products li.product img,
      ul#products li.product h2,
      ul#products li.product p,
      ul#products li.product a { filter:none; }

      Laat je even weten of het werkt?

      VA:F [1.9.17_1161]
      Rating: 0 (from 0 votes)
      • Denthaman Beantwoorden

        Het probleem zit hem in de volgende code

        
        filter: progid:DXImageTransform.Microsoft.dropShadow(color=#969696, offx=1, offy=1, positive=true)
        progid:DXImageTransform.Microsoft.dropShadow(color=#C2C2C2, offx=1, offy=1, positive=true)
        progid:DXImageTransform.Microsoft.dropShadow(color=#EFEFEF, offx=1, offy=1, positive=true)
        

        Jouw CSS oplossing doet het helaas niet, ook niet met !important.

        VA:F [1.9.17_1161]
        Rating: 0 (from 0 votes)
        • hiranthi Beantwoorden

          Ik weet dat het in die code zit, vandaar de poging om de filter op none te zetten voor alle child-elementen.

          Je kan de oplossing in deze comment nog proberen (dus: .prod-info een background-color geven).

          VA:F [1.9.17_1161]
          Rating: 0 (from 0 votes)
          • Denthaman

            De oplossing die je hierboven aandraagt werkt inderdaad gedeeltelijk. Het wordt wel weer leesbaar, maar het lijkt of het fonttype ineens veranderd.

            Bedankt voor je tijd en moeite die je erin gestoken hebt (en sorry voor de bijdehante opmerking ;) )

            VA:F [1.9.17_1161]
            Rating: 0 (from 0 votes)
  2. Denthaman Beantwoorden

    Het probleem zit hem in de volgende code

    
    filter: progid:DXImageTransform.Microsoft.dropShadow(color=#969696, offx=1, offy=1, positive=true)
        progid:DXImageTransform.Microsoft.dropShadow(color=#C2C2C2, offx=1, offy=1, positive=true)
        progid:DXImageTransform.Microsoft.dropShadow(color=#EFEFEF, offx=1, offy=1, positive=true)
    

    Jouw CSS oplossing doet het helaas niet, ook niet met !important.

    VA:F [1.9.17_1161]
    Rating: 0 (from 0 votes)
  3. janssen Beantwoorden

    Zeer goede tips over css en html. Ben zelf een seo fanaat. Ik wil me wel verdiepen in css,php en html zodra ik meer tijd heb.Bedankt
    Een recente post van janssen: Conversie optimalisatie voor je Blog

    VA:F [1.9.17_1161]
    Rating: 0 (from 0 votes)

Geef een reactie

Your email address will not be published. Please enter your name, email and a comment.

*

De volgende HTML tags en attributen zijn toegestaan: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <div align="" class="" dir="" id="" lang="" style="" xml:lang=""> <pre class="">

CommentLuv badge