#javascript #html #css
Вопрос:
У меня есть кнопка, которая больше знака <
или перевернутого треугольника .Я сталкиваюсь с одной проблемой, когда я фокусируюсь на этой кнопке, она показывает мне квадрат .
Ожидаемое поведение : он должен показывать пунктирную сторону <
знака или перевернутый треугольник. не вся квадратная пунктирная линия .
Если это невозможно, можем ли мы удалить эту пунктирную линию, не удаляя текущий css .мы можем обновить css .но мы не можем не удалить исходный css вот мой код
https://codepen.io/naveennsit/pen/MWmZxPj
.cls-nav__btn {
background: none;
border: solid currentColor;
border-width: 0 4px 4px 0;
color: #3A3631;
cursor: pointer;
font-size: 0;
height: 22px;
margin-top: -16px;
padding: 2px;
position: absolute;
top: 50%;
transition: border-color .3s;
width: 22px;
z-index: 5;
}
.cls-nav__btn_prev {
left:500px;
transform: translateY(-50%) rotate(135deg);
}
button:focus, a:focus {
outline-offset: 2px;
outline-width: 2px !important;
outline-style: dotted !important;
outline-color: currentColor;
}
<div class="cls-nav">
<button class="cls-nav__btn cls-nav__btn_prev" tabindex="-1" type="button" value="<"></button>
</div>
<div class="cls__track" id="slider1-track" style="">
</div>
Комментарии:
1. Если я правильно понял эту вторую часть, просто удалите
outline-style: dotted !important;
в своем фокусе, если вы не хотите, чтобы он выбирался таким образом.2. Не могли бы вы разместить точки не контуром, а псевдо-элементом, расположенным на расстоянии 2 пикселей.
Ответ №1:
Я не знаю никакой техники, чтобы показать половину контура, но вы наверняка можете удалить его.
Просто добавьте следующий css:
.cls-nav button:focus,
.cls-nav a:focus {
outline: none !important;
}
Правка: подумал об этом — нашел способ
Ответ @Brandon навел меня на мысль полностью скрыть его, как я это сделал, а затем добавить псевдо-элемент, который будет имитировать половину контура.
.cc .cls .cls-nav__btn {
background: none;
border: solid currentColor;
background: none;
border-width: 0 4px 4px 0;
color: #3A3631;
cursor: pointer;
font-size: 0;
height: 22px;
margin-top: -16px;
padding: 2px;
position: absolute;
top: 50%;
transition: border-color .3s;
width: 22px;
z-index: 5;
}
.cc .cls .cls-nav__btn_prev {
left:500px;
transform: translateY(-50%) rotate(135deg);
}
button:focus, a:focus {
outline-offset: 2px;
outline-width: 2px !important;
outline-style: dotted !important;
outline-color: currentColor;
}
.cls-nav button:focus,
.cls-nav a:focus {
outline: none !important;
}
.cls-nav button:focus::after,
.cls-nav a:focus::after {
content: ' ';
position: absolute;
top: -3px;
right: -7px;
bottom: -7px;
left: -3px;
box-sizing: content-box;
border: dotted red;
background: none;
border-width: 0 1px 1px 0;
}
<section class="cc">
<div id="slider1" class="cls cls--fade cls--ltr cls--draggable slick-active"
style="visibility: visible;">
<div class="cls-nav">
<button class="cls-nav__btn cls-nav__btn_prev" tabindex="-1" type="button"></button>
</div>
<div class="cls__track" id="slider1-track" style="">
</div>
</div>
</section>
.cls-nav button:focus::after,
.cls-nav a:focus::after {
content: ' ';
position: absolute;
top: -3px;
right: -7px;
bottom: -7px;
left: -3px;
box-sizing: content-box;
border: dotted red;
background: none;
border-width: 0 1px 1px 0;
}
Комментарии:
1. это также удалит фокус при использовании вкладки пользователя с помощью клавиши tab.. это создаст серьезную проблему
2. Я не вижу здесь проблемы. Вы спросили, как удалить контур. Теперь вы можете показывать фокус другим способом для пользователей, перемещающихся с клавиатуры: изменять цвет, устанавливать тень, увеличивать стрелку или что-то еще.
Ответ №2:
псевдо-элементы могут помочь вам здесь. Просто в качестве примера удалите фокус и добавьте это, и вы увидите, что я имею в виду. Оттуда вы можете поиграть с ним.
button:focus::before {
content: '';
position: relative;
display: block;
width: 15px;
transform: rotate(45deg);
border-top: 3px dotted black;
}
Ответ №3:
Используйте тень прямоугольника, чтобы получить перевернутый треугольник. Я не уверен, нужна ли вам пунктирная линия или полная линия. Но это, безусловно, поможет создать иллюзию только половины границы/контура.
button:focus, a:focus {
box-shadow: 0.5px 0.5px 0px 2px white, 0px 0px 0px 2px black;
}
Это работает из-за 2 теней. Один белый, а другой черный. Вы можете поиграть с ним, пока не получите именно то, что вам нужно.