Как добавить границы CSS - PullRequest
       2

Как добавить границы CSS

0 голосов
/ 29 октября 2018

HTML:

<ul>
   <li><a href="">someloooooooooooooooooooooong text </a></li>
   <li><a href="">someloooooooooooooooooooooong text </a></li>
</ul>

Как добавить такие рамки?

enter image description here

Мой CSS:

ul {

     display: block;
     width: 255px;
     border: 1px solid #007ab6;
}
 ul a {
     width: 225px;
     white-space: nowrap;
     text-overflow: ellipsis;
     overflow: hidden;
}
 ul a:hover {
     overflow: visible;
     width: unset;
     display: inline-block;
     border: 1px solid;
     background: #ebf7fd;
}

Вот так это выглядит, но это не совсем то, что я хочу. enter image description here

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

Я использовал псевдоэлементы для добавления рамки и цвета фона при наведении. Также вы можете добавить столько списков, сколько хотите. Нет необходимости обрабатывать каждый список отдельно.

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

ul {
  display: block;
  width: 255px;
  border: 1px solid #007ab6;
  list-style: none;
  background: #fff;
  margin: 10px;
}

ul li {
  white-space: nowrap;
  overflow: hidden;
  width: 100%;
  text-overflow: ellipsis;
  display: inline-block;
  position: relative;
  vertical-align: middle;
}

ul li:before {
  content: '';
  position: absolute;
  top: -1px;
  left: -1px;
  right: -1px;
  bottom: -1px;
  background: #ffffff;
  border: 1px solid;
  z-index: -3;
  box-sizing: border-box;
}

ul li:after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: #fff;
  z-index: -2;
}

ul li:hover {
  overflow: visible;
  width: auto;
}

ul li a {
  position: relative;
  z-index: 1;
  text-decoration: none;
  background: #fff;
  padding: 10px;
  display: inline-block;
}
<ul>
  <li><a href="">someloooooooooooooooooooooong text </a></li>
  <li><a href="">someloooooooooooooooooooooong text </a></li>
  <li><a href="">someloooooooooooooooooooooong text </a></li>
  <li><a href="">someloooooooooooooooooooooong text </a></li>
</ul>
0 голосов
/ 29 октября 2018
.wrapper{
            display: flex;
            align-items: flex-start;
            flex-direction: column;
            border-collapse: collapse;
        }

        a{
          flex:1;
            border:1px solid red;

        }




[is this what you are going  for to some extent?][1]  [1]: https://i.stack.imgur.com/Wpp01.png


   <div class="wrapper">
        <a>SOMElongtexttt</a>
        <a>SOMMMMMMMMMMMMMMMMMMEEEEEEEEEEEEEEEE</a>
   </div>
0 голосов
/ 29 октября 2018

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

ul {
  display: block;
  width: 255px;
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: 0;
  line-height: 0;
}

ul li {
  font-size: 16px;
  box-sizing: border-box;
  line-height: 2;
  padding: 0 10px;
  width: 100%;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  display: inline-block;
  border: 1px solid #007ab6;
  border-bottom-color: transparent;
  border-top-color: transparent;
  background: #ebf7fd;
  position: relative;
  z-index: 1;
  margin: -1px 0;
}

ul li:first-child {border-top-color: #007ab6;}
ul li:last-child {border-bottom-color: #007ab6;}

ul li:hover {
  overflow: visible;
  width: auto;
  min-width: 100%;
  border-color: #007ab6;
  margin: 0;
  z-index: 0;
  line-height: calc(2em - 2px);
}

ul li:first-child:hover, 
ul li:last-child:hover {
  margin: -1px 0; 
  line-height: 2; 
}
<ul>
  <li><a href="">someloooooooooooooooooooooong text </a></li>
  <li><a href="">text </a></li>
  <li><a href="">someloooooooooooooooooooooong text </a></li>
  <li><a href="">someloooooooooooooooooooooong text </a></li>
</ul>

UPD: Теперь работает с эффектом hover.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...