JSFiddle - React, Tailwind, and code Playground

by Johan Muller

HTML

<div id="preview">
    <img id="pimg" src="" alt="Flora preview" />
</div>
<ul class="item">
    <li class="image">
        <img src="http://medicpulse.ru/uploads/posts/2012-11/1352461872_pic190.jpg" alt="" />
    </li>
    <li class="title">Item #123</li>
    <li class="code">Код товара: 00128</li>
    <li class="price">3,150 руб</li>
</ul>
<ul class="item">
    <li class="image">
        <img src="http://medicpulse.ru/uploads/posts/2012-11/1352461872_pic190.jpg" alt="" />
    </li>
    <li class="title">Item #123</li>
    <li class="code">Код товара: 00128</li>
    <li class="price">3,150 руб</li>
</ul>
<ul class="item">
    <li class="image">
        <img src="http://medicpulse.ru/uploads/posts/2012-11/1352461872_pic190.jpg" alt="" />
    </li>
    <li class="title">Item #123</li>
    <li class="code">Код товара: 00128</li>
    <li class="price">3,150 руб</li>
</ul>
<ul class="item">
    <li class="image">
        <img src="http://medicpulse.ru/uploads/posts/2012-11/1352461872_pic190.jpg" alt="" />
    </li>
    <li class="title">Item #123</li>
    <li class="code">Код товара: 00128</li>
    <li class="price">3,150 руб</li>
</ul>
<ul class="item">
    <li class="image">
        <img src="http://medicpulse.ru/uploads/posts/2012-11/1352461872_pic190.jpg" alt="" />
    </li>
    <li class="title">Item #123</li>
    <li class="code">Код товара: 00128</li>
    <li class="price">3,150 руб</li>
</ul>
<ul class="item">
    <li class="image">
        <img src="http://medicpulse.ru/uploads/posts/2012-11/1352461872_pic190.jpg" alt="" />
    </li>
    <li class="title">Item #123</li>
    <li class="code">Код товара: 00128</li>
    <li class="price">3,150 руб</li>
</ul>
<ul class="item">
    <li class="image">
        <img src="http://medicpulse.ru/uploads/posts/2012-11/1352461872_pic190.jpg" alt="" />
    </li>
    <li class="title">Item #123</li>
    <li class="code">Код товара: 00128</li>
    <li class="price">3,150 руб</li>
</ul>
<ul class="item">
    <li...

CSS

body {
    position: relative;
    padding-right: 200px;
    min-width: 800px;
}
#preview {
    display: none;
    position: absolute;
    overflow: hidden;
    width: 300px;
    height: 200px;
    top: 0px;
    left: 0px;
    background: url(art/ajax.gif) no-repeat 50% 50% #fff;
    border: 1px solid #ccc;
    border-radius: 4px;
    z-index: 999;
}
#preview img {
    position: absolute;
    top: 0px;
    left: 0px;
}
.item {
    display: inline-block;
    position: relative;
    padding: 10px;
    margin: 20px 15px 0px 0px;
    height: 100px;
    width: 230px;
    overflow: hidden;
    text-align: left;
    cursor: pointer;
    background-color: #f0f0f0;
    border-radius: 4px;
}
.item:hover {
    background-color: #F7D9E5;
}
.item:active {
    background-color: #F7D9E5;
    box-shadow: 1px 1px 5px 1px rgba(0, 0, 0, .2) inset;
}
.item .image img {
    width: 100px;
    height: 100px;
    border: 1px solid #aaa;
    border-radius: 4px;
}
.item .image {
    position: absolute;
    top: 10px;
    left: 10px;
}
.item .title, .item .code, .item .price {
    padding-left: 110px;
}
.item .title {
    font-size: 1.2em;
}
.item .code {
    font-size: 0.8em;
    margin-bottom: 15px;
}
.item .price {
    font-size: 1.4em;
    font-weight: 700;
}

JavaScript

$('.item').mouseenter(function () {
    var pos = $(this).position();
    var ind = $(this).index();
    itemx = setTimeout(function () {
        $('#pimg').attr('src', 'art/demo.jpg');
        $('#preview').css({
            'top': pos.top + 20,
            'left': pos.left + 260
        }).show(200);
    }, 500);
}).mousemove(function (e) {
    var pos = $(this).position();
    var ind = $(this).index();
    var posx = e.pageX;
    var posy = e.pageY;
    $('#preview').text('x: ' + posx + ' y: ' + posy + ' i: ' + ind);
}).mouseleave(function () {
    clearInterval(itemx);
    $('#preview').hide(200);
});