JSFiddle - React, Tailwind, and code Playground
HTML
<div id="container"></div>
CSS
body{
margin:0;
padding:0;
font-family: Arial;
font-weight: bold;
}
.card{
width:100px;
height:100px;
float:left;
background-color:#ccc;
margin-bottom:3px;
margin-right:3px;
position: relative;
cursor: pointer;
}
.cardset{
width:412px;
height:412px;
}
.selected {
width:94px;
height:94px;
border:3px solid black;
}
#container {
padding: 25px;
}
JavaScript
(function ($) {
"use strict";
//Globalfunctions
$.fn.mouseControls = function (cardMap) {
$(this).on({
click: function () {
},
mouseenter: function () {
$(this).parent().children('.selected').removeClass('selected');
$(this).addClass('selected');
}
});
return $(this);
};
$.fn.cardMoveHorizont = function (direction, cardMap) {
var card_key, card_row, card, rowCount, actCardObj, i;
//Get row of element
for (card_key in cardMap) {
if (cardMap.hasOwnProperty(card_key)) {
card_row = cardMap[card_key];
rowCount = 1;
for (card in card_row) {
if (card_row.hasOwnProperty(card)) {
if (cardMap[card_key][card].id === $(this).attr('id')) {
actCardObj = cardMap[card_key][card];
if (direction === 'next') {
if (rowCount % 4 === 0) {
$(this).removeClass('selected');
$('#card' + (parseInt(card.replace('card', ""), 10) - 3)).addClass('selected');
} else {
$(this).removeClass('selected');
$('#card' + (parseInt(card.replace('card', ""), 10) + 1)).addClass('selected');
}
} else if (direction === 'prev') {
if (rowCount === 1) {
$(this).removeClass('selected');
$('#card' + (parseInt(card.replace('card', ""), 10) + 3)).addClass('selected');
} else {
...