Создайте <div> пользовательских форм для разработки RFM-сегментации

Итак, сегментация RFM выглядит так: https://www.putler.com/wp-content/uploads/2017/05/rfm-grid.png

Я хочу воссоздать его в html, где каждый блок представляет собой один сегмент. Я пытался сделать это как блок [1,1], но так как я хочу создать эффект наведения. Несколько блоков должны быть объединены вместе, чтобы получить один общий эффект.

Я пытался сделать это с помощью div, но не смог создать эффект наведения. https://i.imgur.com/S51lu0p.png

Вот код реакции

                                  <div class = "rfmBox">
                <div class = "flex-container">
                    <div>5</div>
                    <div style = {{ backgroundColor: "#FFC9CE" }} />
                    <div style = {{ backgroundColor: "#FFEDB7" }} />
                    <div style = {{ backgroundColor: "#E7F7BA" }} />
                    <div style = {{ backgroundColor: "#E7F7BA" }} />
                    <div style = {{ backgroundColor: "#E0ECBC" }} />
                </div>
                <div class = "flex-container">
                    <div>4</div>
                    <div style = {{ backgroundColor: "#FFEDB7" }} />
                    <div style = {{ backgroundColor: "#FFEDB7" }} />
                    <div style = {{ backgroundColor: "#E7F7BA" }} />
                    <div style = {{ backgroundColor: "#E7F7BA" }} />
                    <div style = {{ backgroundColor: "#E7F7BA" }} />
                </div>
                <div class = "flex-container">
                    <div>3</div>
                    <div style = {{ backgroundColor: "#FFEDB7" }} />
                    <div style = {{ backgroundColor: "#FFEDB7" }} />
                    <div style = {{ backgroundColor: "#9AF4E7" }} />
                    <div style = {{ backgroundColor: "#C1FFFA" }} />
                    <div style = {{ backgroundColor: "#C1FFFA" }} />
                </div>
                <div class = "flex-container">
                    <div>2</div>
                    <div style = {{ backgroundColor: "#CFD8E4" }} />
                    <div style = {{ backgroundColor: "#F1F2F4" }} />
                    <div style = {{ backgroundColor: "#B9E0E7" }} />
                    <div style = {{ backgroundColor: "#C1FFFA" }} />
                    <div style = {{ backgroundColor: "#C1FFFA" }} />
                </div>
                <div class = "flex-container">
                    <div>1</div>
                    <div style = {{ backgroundColor: "#CFD8E4" }} />
                    <div style = {{ backgroundColor: "#CFD8E4" }} />
                    <div style = {{ backgroundColor: "#B9E0E7" }} />
                    <div style = {{ backgroundColor: "#C0ECFD" }} />
                    <div style = {{ backgroundColor: "#FFEEEE" }} />
                </div>

                <div class = "flex-container">
                    <div />
                    <div>1</div>
                    <div>2</div>
                    <div>3</div>
                    <div>4</div>
                    <div>5</div>
                </div>
            </div>

Вы пытались обновить z-индекс, чтобы элемент под элементом не перекрывался?

Beaulne 10.04.2019 21:36
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
1
65
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я думаю, что вам нужно добавить position: relative; на div и z-индекс при наведении.

вот песочница кода, которая работает аналогично, но совершенно уродлива. https://codesandbox.io/embed/oqwlvr7229?fontsize=14

Обновлено: неправильно прочитайте свою проблему. вот обновление. аналогичное решение, но ближе отражает вашу проблему.

https://codesandbox.io/embed/oqwlvr7229?fontsize=14

Ответ принят как подходящий

С помощью display: grid; вы можете создать только один <div> по области, а затем для каждой области разместить его по своему усмотрению, используя свойства grid-column и grid-row css.

Просто добавьте немного position: relative и z-index и все!

Я сделал codepen, где пытался сделать то же самое, что и вы: https://codepen.io/loic/pen/ZZePXd

(Я настроил любой код React, так как решил вашу проблему только с помощью html и css).

Надеюсь, это удалось ;)

Супер. Только одна проблема, при наведении на 2 он не должен закрывать часть 1. Можно ли это сделать?

aks 11.04.2019 08:11

В моем браузере (хром) зависание 2 не закрывает часть 1. В противном случае просто поиграйте с z-index, и все должно быть в порядке.

Loïc Goyet 11.04.2019 21:24

Другие вопросы по теме