как удалить пунктирный контур квадрата в фокусе кнопки с помощью css?

#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 теней. Один белый, а другой черный. Вы можете поиграть с ним, пока не получите именно то, что вам нужно.