Попробуйте это.
1) Давайте настроим CSS более явно для переопределения CSS-кодов без использования !important
body a.toc-link{
color: wheat;
}
2) Белая линия создается с помощью псевдоселектора a.toc-link::before
. Поскольку он использует height:inherit
, высота может потенциально меняться в зависимости от того, на каком устройстве / размере экрана вы находитесь, поэтому давайте используем jQuery, чтобы получить высоту тега привязки и установить ее на высоту белой линии
var tocHeight = $('a.toc-link').height(); //18
3) Мы не можем напрямую стилизовать ::before
с JS, поэтому нам нужно динамически вставить его на страницу в виде тега <style>
. Обратите внимание на обратную галочку и использование ${}
- это известно как JS литералы шаблона
//Create the html
// remember, tocHeight = 18 so we add the 'px' here
var html = `<style>a.toc-link::before {
height: ${tocHeight}px;
}</style>`;
//Insert it above the closing `</body>` tag
$('body').append(html);
4) Установите прослушиватель событий при нажатии для тегов привязки и добавьте класс, чтобы изменить цвет на красный.
$('a.toc-link').on('click', function(){
//Remove any previously added classes of 'clicked' to all toc-link elements
$('a.toc-link').removeClass('clicked');
//Add the class to the currently clicked anchor tag
$(this).addClass('clicked');
});
5) создать класс .clicked
в CSS
body a.toc-link.clicked {
color:red;
}
демо: https://jsfiddle.net/b0n4xk1c/
Примечание. Хотя белая линия имеет такой же размер, как и теги привязки, из-за полей / промежутков между ссылками имеются пробелы (см. Демонстрацию). Если вы хотите, чтобы линия полностью соединилась, просто добавьте к значению несколько дополнительных пикселей после ее захвата.
var tocHeight = $('a.toc-link').height() + 6;