tak.lol

Пчелиные соты - div сетка

Стало интересно как div будут выглядеть в виде пчелиных сот. Интересно, может стоит где-то исопльзовать

(результат верстки)




<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Пчелиные соты</title>
    <style>
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            background-color: #f0f0f0;
            margin: 0;
        }
        .honeycomb {
            display: flex;
            flex-direction: column;
            align-items: center;
        }
        .row {
            display: flex;
            justify-content: center;
        }
        .cell {
            position: relative;
            width: 100px; /* Ширина ячейки */
            height: 100px; /* Высота ячейки */
            background-color: #ffcc00; /* Цвет по умолчанию */
            margin: 0; /* Убираем отступы между ячейками */
            clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
            border: 1px solid #fff; /* Светло-желтая рамка */
        }
        .cell:nth-child(odd) {
            background-color: #ff9900; /* Цвет для нечетных ячеек */
        }
        .offset {
            margin-left: 101px; /* Сдвиг вправо на 50 пикселей */
            margin-top: -23px; /* Сдвиг вверх на 23 пикселя */
        }
    
        .one {margin-top:-23px;}
    </style>
</head>
<body>
    <div class="honeycomb">
        <div class="row one">
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
			<div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
        </div>
        <div class="row offset">
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
			<div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
        </div>
        <div class="row one">
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
			<div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
        </div>
        <div class="row offset">
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
			<div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
        </div>
        <div class="row one">
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
	    <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
        </div>
		<div class="row offset">
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
			<div class="cell"></div>
            <div class="cell"></div>
            <div class="cell"></div>
        </div>
    </div>
</body>
</html>


Продолжая забавляться с сотами, решил, что нужно все это выводить на JS, чтобы можно было дальше манипулировать сотами:


В матрице можно раставлять цвета....затягивает.

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Пчелиные соты</title>
    <style>
        body {
            display: flex;
            justify-content: left;
            align-items: left;
            height: 100vh;
            background-color: #f0f0f0;
            margin: 0;
        }
        .honeycomb {
            display: flex;
            flex-direction: column;
            align-items: center;
        }
        .row {
            display: flex;
            justify-content: center;
            width: 100%; /* Задаем ширину для правильного выравнивания */
        }
        .cell {
            position: relative;
            width: 100px; /* Ширина ячейки */
            height: 100px; /* Высота ячейки */
            background-color: #ffcc00; /* Цвет по умолчанию */
            margin: 0; /* Убираем отступы между ячейками */
            clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
            border: 1px solid #fff; /* Светло-желтая рамка */
        }
        .cell:nth-child(odd) {
            background-color: #ff9900; /* Цвет для нечетных ячеек */
        }
        .cell.dark {
            background-color: #cc9900; /* Темный цвет для границ */
        }
        .offset {
           margin-left: 101px; /* Сдвиг вправо на 100 пикселей */
		   margin-top:-23px;
		   margin-bottom:-23px;
        }
    </style>
</head>
<body>
    <div class="honeycomb" id="honeycomb"></div>

    <script>
        const rows = [
            ['dark', 'dark', 'dark', 'dark', 'dark', 'dark', 'dark'],
            ['dark', '', '', '', '', '',  'dark'],
            ['dark', '', '', '', '', '',  'dark'],
            ['dark', '', '', '', '', '',  'dark'],
            ['dark', '', '', '', '', '',  'dark'],
	    ['dark', '', '', '', '', '',  'dark'],
            ['dark', 'dark', 'dark', 'dark', 'dark', 'dark', 'dark'],
          
        ];

        const honeycomb = document.getElementById('honeycomb');

        rows.forEach((row, index) => {
            const rowDiv = document.createElement('div');
            rowDiv.classList.add('row');
            
            // Добавляем смещение для четных строк
            if (index % 2 !== 0) {
                rowDiv.classList.add('offset');
            }

            row.forEach(cell => {
                const cellDiv = document.createElement('div');
                cellDiv.classList.add('cell');
                if (cell === 'dark') {
                    cellDiv.classList.add('dark');
                }
                rowDiv.appendChild(cellDiv);
            });

            honeycomb.appendChild(rowDiv);
        });
    </script>
</body>
</html>


Комментарии к материалу
Комментировать
Ваш комментарий: