Как применить стиль начальной загрузки <a>к <button>в панели навигации - PullRequest
0 голосов
/ 16 ноября 2018
CSS

Bootstrap автоматически применяет красивый вид к тегам <a>, когда они внутри <li> внутри <nav class="navbar-nav">. Мне нужен был этот приятный взгляд на кликабельный <a> тег с href="#", который выполняет некоторый JavaScript.

Однако я также использую React, который выдает предупреждения ( см. Здесь ), когда тег <a> имеет href #. Итак, согласно это :

Однако мы понимаем, что разработчики не всегда полностью контролируют визуальный дизайн веб-приложений. В тех случаях, когда необходимо предоставить элемент, похожий на якорь, который действует как цель щелчка мышью, в результате чего навигация отсутствует, мы хотели бы рекомендовать компромисс.

Снова измените элемент на

<button 
  type="button"
  className="link-button" 
  onClick={() => this.setState({showSomething: true})}>
    Press me, I look like a link
</button>

Затем используйте стиль, чтобы изменить его внешний вид на ссылку:

.link-button {
  background-color: transparent;
  border: none;
  cursor: pointer;
  text-decoration: underline;
  display: inline;
  margin: 0;
  padding: 0;
}

.link-button:hover,
.link-button:focus {
text-decoration: none;
}

Это бы сработало, за исключением того, что Bootstrap больше не применяет к нему CSS. Нужно ли вручную добавлять CSS к кнопке или я что-то упустил?

Кажется, способ сделать это - просто добавить CSS к кнопке, но я не уверен. Есть ли, например, способ сделать кнопки с определенной функцией класса точно такими же, как <a> s (в терминах CSS)?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Если вы действительно хотите, чтобы кнопка выглядела как ссылка, вы можете сделать что-то вроде этого:

.link-like {
  background-color: transparent !important;
  color:rgba(0,0,0,.5) !important;
}

.link-like:hover {
  color: rgba(0,0,0,.7) !important;
}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>

<nav class="navbar navbar-light navbar-expand-md">
  <div class="container">
    <ul class="nav navbar-nav">
      <li class="nav-item">
        <button class="nav-link btn-outline-light border-0 link-like ">Imposter</button>
      </li>
      <li class="nav-item">
        <a class="nav-link">True Anchor</a>
      </li>
    </ul>    
  </div>
</nav>

Вы можете удалить такие вещи, как границы и фоны, используя некоторые классы начальной загрузки и один из ваших собственных.Вот как это работает:

  • btn-outline-light придаст кнопке белый фон, а цвет текста
  • border-0 удалит границы кнопки
  • link-like воспроизводит другие свойства типичного элемента привязки, такие как: фоновое, нормальное и зависание состояния

вот рабочий пример :)

С другой стороныКроме того, существует класс btn-link в соответствии с документацией bootstrap 3.0.3 , на который я полагаю, что response-bootstrap (поскольку он в тегах) предназначен.

0 голосов
/ 16 ноября 2018

Существует ли, например, способ сделать кнопки с определенной функцией класса точно такими же, как s (в терминах CSS)

Да, почему нет.

просто создайте класс css в некоторой глобальной области и поместите туда все необходимые вам стили.

например:

// in your css/scss file
.myLink {
  // same css what bootstrap applies
}

// then just use it whenever you need in JSX:
<button className="myLink">...</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...