#reactjs #highcharts #sass
#reactjs #высокие диаграммы #нахальство
Вопрос:
Я хочу отобразить кнопки html в четырех углах полей полярной диаграммы HighCharts. Я смог наложить кнопки поверх div диаграммы, используя css. Однако выполнение этого приводит к тому, что элементы условных обозначений диаграммы не реагируют на щелчки мыши.
Это пример кода для одной из кнопок:
<div className="pop-chart-button pop-chart-button-top pop-chart-button-left">
<a role="button" onClick={this.showBrandQuadrantChart}>
<img src={expandImageUrl} alt="expand" /> BRAND
</a>
</div>
Есть ли какой-то способ добиться этого, который не делает элементы легенды невосприимчивыми к щелчкам мыши?
Комментарии:
1. Не могли бы вы поделиться всем кодом (html, js и css), пожалуйста.
2. Разделил scss и js ниже.
Ответ №1:
Просто угадав, не видя ваш CSS-код, кнопки z-index находятся под диаграммой. Установка кнопок на более высокий z-индекс, вероятно, устранит проблему.
Комментарии:
1. Установка z-индекса оказалась необходимой. Однако z-индекс div диаграммы должен быть выше, чем z-индексы div кнопки.
Ответ №2:
Решил мою проблему, установив z-индекс как для диаграмм, так и для кнопок, и поместив div диаграммы после div, содержащего кнопки.
Вот стили scss:
.pop-kahn-chart-container {
position: relative;
.pop-chart {
z-index: 99;
}
.pop-chart-buttons {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
.pop-chart-button {
font-family: 'Montserrat', sans-serif;
font-style: normal;
font-size: 0.86rem;
font-weight: 600;
position: absolute;
z-index: 9;
a {
border-radius: 2px;
padding: 2px 8px;
color: $bp-green;
}
a:hover {
background-color: $bp-gray2;
}
img {
width: 19px;
height: 19px;
vertical-align: center;
position: relative;
top: -3px;
}
@include media-breakpoint-down(lg) {
font-size: 0.6rem;
img {
width: 14.25px;
height: 14.25px;
top: -2.25px;
}
}
}
.pop-chart-button-top {
top: 10%;
}
.pop-chart-button-bottom {
top: 85%;
}
.pop-chart-button-left {
left: 5%;
}
.pop-chart-button-right {
left: 75%;
}
}
}
Вот код, который отображает диаграмму с наложенными кнопками:
<div className="pop-kahn-chart-container">
<div className="pop-chart-buttons">
<div className="pop-chart-button pop-chart-button-top pop-chart-button-left">
<a role="button" onClick={this.showBrandQuadrantChart}>
<img src={expandImageUrl} alt="expand" /> BRAND
</a>
</div>
<div className="pop-chart-button pop-chart-button-top pop-chart-button-right">
<a role="button" onClick={this.showExperienceQuadrantChart}>
<img src={expandImageUrl} alt="expand" /> EXPERIENCE
</a>
</div>
<div className="pop-chart-button pop-chart-button-bottom pop-chart-button-left">
<a role="button" onClick={this.showLowPriceQuadrantChart}>
<img src={expandImageUrl} alt="expand" /> LOW PRICE
</a>
</div>
<div className="pop-chart-button pop-chart-button-bottom pop-chart-button-right">
<a role="button" onClick={this.showFrictionlessQuadrantChart}>
<img src={expandImageUrl} alt="expand" /> FRICTIONLESS
</a>
</div>
</div>
<div className="pop-chart">
<HighchartsReact highcharts={Highcharts} options={options} />
</div>
</div>
Комментарии:
1. Этот пример продемонстрировал, что необходимо установить оба z-индекса: codepen.io/hobart9579/pen/ryoopN