Здесь я работаю с границами. Я хочу добавить границу к значку, как показано на изображении. пока я делал это, может ли кто-нибудь предложить мне указать мне в правильном направлении
.list {
display: flex;
flex-direction: row;
width: 182px;
background: aliceblue;
}
ul {
display: flex;
flex-wrap: wrap;
list-style-type: none;
}
li {
width: 20px;
padding: 10px;
border-top: 1px solid rgba(0, 0, 0, 0.2);
border-right: 1px solid rgba(0, 0, 0, 0.2);
}
i.fa {
padding: 5px;
}<link href = "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" rel = "stylesheet"/>
<div class = "list">
<ul>
<li><i class = "fa fa-facebook" aria-hidden = "true"></i></li>
<li><i class = "fa fa-twitter" aria-hidden = "true"></i></li>
<li><i class = "fa fa-pinterest-p" aria-hidden = "true"></i></li>
<li><i class = "fa fa-dribbble" aria-hidden = "true"></i></li>
<li><i class = "fa fa-google-plus" aria-hidden = "true"></i></li>
<li><i class = "fa fa-whatsapp" aria-hidden = "true"></i></li>
<li><i class = "fa fa-github" aria-hidden = "true"></i></li>
</ul>
</div>
@ Peter B нет, это гибко, количество иконок не будет изменяться статично.






Кстати, я думаю, что самым простым решением для вас было бы нацелить конкретно на 5-й и 6-й дочерние элементы. Вы можете сделать это с помощью селектора css nth-child(n) - поэтому li:nth-child(5), например, нацеливается на поле значка G +, а затем просто добавляет стиль для нижней границы. Дополнительная информация: https://www.w3schools.com/CSSref/sel_nth-child.asp
ага а если иконок меньше или больше если в них больше 3-х рядов?
Да, не очень хорошо работает, если вы не знаете количество строк. Но для жесткого кодирования количества значков, как в примере, это должно сработать.
Этого легко добиться, используя сплошной цвет и отрицательные поля. пожалуйста, взгляните на приведенный ниже рабочий фрагмент, надеюсь, это поможет :)
.list {
display: flex;
flex-direction: row;
width: 182px;
background: aliceblue;
}
ul {
display: flex;
flex-wrap: wrap;
list-style-type: none;
}
li {
width: 20px;
padding: 10px;
border: 1px solid #ccc;
margin: -1px -1px 0 0;
}
i.fa {
padding: 5px;
}<link href = "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" rel = "stylesheet"/>
<div class = "list">
<ul>
<li><i class = "fa fa-facebook" aria-hidden = "true"></i></li>
<li><i class = "fa fa-twitter" aria-hidden = "true"></i></li>
<li><i class = "fa fa-pinterest-p" aria-hidden = "true"></i></li>
<li><i class = "fa fa-dribbble" aria-hidden = "true"></i></li>
<li><i class = "fa fa-google-plus" aria-hidden = "true"></i></li>
<li><i class = "fa fa-whatsapp" aria-hidden = "true"></i></li>
<li><i class = "fa fa-github" aria-hidden = "true"></i></li>
</ul>
</div>Приведенный выше ответ был моим личным мнением о том, чтобы иметь лучший дизайн пользовательского интерфейса, чтобы добиться результата, как показано на скриншоте, вы можете сделать это, используя тег table и несколько строк css, как показано в приведенном ниже фрагменте кода. у него есть своя загвоздка в виде строк, которые вам нужно контролировать :)
table {
border-collapse: collapse;
border-style: hidden;
}
table td {
border-width: 1px;
border-style: inset;
border-color:#ccc;
padding: 10px;
}<link href = "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" rel = "stylesheet"/>
<table>
<tr>
<td><i class = "fa fa-facebook" aria-hidden = "true"></i></td>
<td><i class = "fa fa-twitter" aria-hidden = "true"></i></td>
<td><i class = "fa fa-pinterest-p" aria-hidden = "true"></i></td>
</tr>
<tr>
<td><i class = "fa fa-dribbble" aria-hidden = "true"></i></td>
<td><i class = "fa fa-google-plus" aria-hidden = "true"></i></td>
<td><i class = "fa fa-whatsapp" aria-hidden = "true"></i></td>
</tr>
<tr>
<td><i class = "fa fa-github" aria-hidden = "true"></i></td>
</tr>
</table>спасибо, но как насчет левой границы первого ребенка, я не хочу
Затем выберите первый li с помощью селектора nth-child - см. Мой ответ ниже. В противном случае для меня это правильное решение.
@Girisha C, пожалуйста, обновите свой ответ, используя селектор nth-child.
Я вижу 7 полностью заключенных в рамку значков (границы со всех сторон) как в Chrome, так и в Firefox.
@Husna просто скопируйте и вставьте решение и добавьте li:nth-child(1) { border-left-style: none; }
@Husna, @Peter B - пожалуйста, взгляните на второй ответ выше, используя table, у него есть собственный улов, связанный с наличием строк, которые необходимо контролировать :(
Я бы либо использовал псевдокласс иконок .nth-child, чтобы установить определенные границы для каждого из них, либо, что еще лучше (на мой взгляд), поместил бы класс для каждого из них на основе необходимых границ (.border-right, .border-bottom и т. д.). Это делает ваш html более наглядным с точки зрения указания того, что класс должен делать с элементом.
Преимущество метода .nth-child в том, что вы можете переставлять элементы, не меняя их классы, и при этом добиваться тех же результатов. Вам придется написать еще немного CSS, но это довольно простой материал, так что это не проблема.
Пожалуйста, попробуйте следующий код. также вы можете добавить больше значков, которые выглядят хорошо
.list {
display: flex;
flex-direction: row;
width: 182px;
background: aliceblue;
}
ul {
padding: 0;
margin: 0 0 40px 0;
overflow: hidden;
width: 100%;
flex-wrap: wrap;
display: flex;
}
li {
width: 33.33%;
-webkit-box-flex: 0;
-ms-flex: 0 0 25%;
flex: 0 0 33.33%;
max-width: 33.33%;
display: inline-block;
text-align: center;
border-bottom: 1px solid #000;
margin-bottom: -1px;
padding: 10px;
border-left: 1px solid #000;
margin-bottom: -1px;
}
li:nth-child(3n-5) {
border-left: none;
}
li:nth-child(n+2) {
border-right: none;
}
i.fa {
padding: 5px;
}<link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link href = "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" rel = "stylesheet"/>
<div class = "list">
<ul>
<li><i class = "fa fa-facebook" aria-hidden = "true"></i></li>
<li><i class = "fa fa-twitter" aria-hidden = "true"></i></li>
<li><i class = "fa fa-pinterest-p" aria-hidden = "true"></i></li>
<li><i class = "fa fa-dribbble" aria-hidden = "true"></i></li>
<li><i class = "fa fa-google-plus" aria-hidden = "true"></i></li>
<li><i class = "fa fa-whatsapp" aria-hidden = "true"></i></li>
<li><i class = "fa fa-github" aria-hidden = "true"></i></li>
<li><i class = "fa fa-instagram" aria-hidden = "true"></i></li>
</ul>
</div>какое объяснение это Пожалуйста, попробуйте следующий код, я работаю над вашей проблемой, пока вы не опубликуете проблему?
Если и только если фиксировано количество значков в одной строке (3).
.list {
display: flex;
flex-direction: row;
width: 182px;
background: aliceblue;
}
ul {
display: flex;
flex-wrap: wrap;
list-style-type: none;
}
li {
width: 20px;
padding: 10px;
border-right: 1px solid rgba(0, 0, 0, 0.2);
border-bottom: 1px solid rgba(0, 0, 0, 0.2);
}
li:nth-child(3n+3) {
border-right: 0;
}
i.fa {
padding: 5px;
}<link href = "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" rel = "stylesheet" />
<div class = "list">
<ul>
<li><i class = "fa fa-facebook" aria-hidden = "true"></i></li>
<li><i class = "fa fa-twitter" aria-hidden = "true"></i></li>
<li><i class = "fa fa-pinterest-p" aria-hidden = "true"></i></li>
<li><i class = "fa fa-dribbble" aria-hidden = "true"></i></li>
<li><i class = "fa fa-google-plus" aria-hidden = "true"></i></li>
<li><i class = "fa fa-whatsapp" aria-hidden = "true"></i></li>
<li><i class = "fa fa-github" aria-hidden = "true"></i></li>
<li><i class = "fa fa-facebook" aria-hidden = "true"></i></li>
<li><i class = "fa fa-twitter" aria-hidden = "true"></i></li>
<li><i class = "fa fa-pinterest-p" aria-hidden = "true"></i></li>
<li><i class = "fa fa-dribbble" aria-hidden = "true"></i></li>
<li><i class = "fa fa-google-plus" aria-hidden = "true"></i></li>
<li><i class = "fa fa-whatsapp" aria-hidden = "true"></i></li>
<li><i class = "fa fa-github" aria-hidden = "true"></i></li>
</ul>
</div>Вот идея использования псевдоэлемента и одной границы. Вы добавляете border-right только к первому и второму элементам каждой строки, и для каждого первого элемента, начиная со второй строки, вы добавляете целую строку сверху, которая будет покрывать строку.
.list {
display: inline-flex;
margin:5px;
flex-direction: row;
width: 182px;
background: aliceblue;
}
ul {
display: flex;
flex-wrap: wrap;
list-style-type: none;
}
li {
width: 20px;
padding: 10px;
position:relative; /*Don't forget this*/
}
/*The magic starts here */
li:not(:nth-child(3n + 3)) {
border-right: 1px solid rgba(0, 0, 0, 0.2);
}
li:nth-child(3n + 4):before {
content:"";
position:absolute;
top:0;
left:0;
width:120px;
height:1px;
background:rgba(0, 0, 0, 0.2);
}
/**/
i.fa {
padding: 5px;
}<link href = "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" rel = "stylesheet"/>
<div class = "list">
<ul>
<li><i class = "fa fa-facebook" aria-hidden = "true"></i></li>
<li><i class = "fa fa-twitter" aria-hidden = "true"></i></li>
<li><i class = "fa fa-pinterest-p" aria-hidden = "true"></i></li>
<li><i class = "fa fa-dribbble" aria-hidden = "true"></i></li>
</ul>
</div>
<div class = "list">
<ul>
<li><i class = "fa fa-facebook" aria-hidden = "true"></i></li>
<li><i class = "fa fa-github" aria-hidden = "true"></i></li>
<li><i class = "fa fa-pinterest-p" aria-hidden = "true"></i></li>
</ul>
</div>
<div class = "list">
<ul>
<li><i class = "fa fa-facebook" aria-hidden = "true"></i></li>
<li><i class = "fa fa-twitter" aria-hidden = "true"></i></li>
<li><i class = "fa fa-pinterest-p" aria-hidden = "true"></i></li>
<li><i class = "fa fa-dribbble" aria-hidden = "true"></i></li>
<li><i class = "fa fa-google-plus" aria-hidden = "true"></i></li>
<li><i class = "fa fa-whatsapp" aria-hidden = "true"></i></li>
</ul>
</div>
<div class = "list">
<ul>
<li><i class = "fa fa-facebook" aria-hidden = "true"></i></li>
<li><i class = "fa fa-twitter" aria-hidden = "true"></i></li>
<li><i class = "fa fa-pinterest-p" aria-hidden = "true"></i></li>
<li><i class = "fa fa-dribbble" aria-hidden = "true"></i></li>
<li><i class = "fa fa-google-plus" aria-hidden = "true"></i></li>
<li><i class = "fa fa-whatsapp" aria-hidden = "true"></i></li>
<li><i class = "fa fa-github" aria-hidden = "true"></i></li>
<li><i class = "fa fa-github" aria-hidden = "true"></i></li>
</ul>
</div>
<div class = "list">
<ul>
<li><i class = "fa fa-facebook" aria-hidden = "true"></i></li>
<li><i class = "fa fa-twitter" aria-hidden = "true"></i></li>
<li><i class = "fa fa-pinterest-p" aria-hidden = "true"></i></li>
<li><i class = "fa fa-dribbble" aria-hidden = "true"></i></li>
<li><i class = "fa fa-google-plus" aria-hidden = "true"></i></li>
<li><i class = "fa fa-whatsapp" aria-hidden = "true"></i></li>
<li><i class = "fa fa-github" aria-hidden = "true"></i></li>
<li><i class = "fa fa-github" aria-hidden = "true"></i></li>
<li><i class = "fa fa-github" aria-hidden = "true"></i></li>
</ul>
</div>
Можно ли менять количество значков или всегда 7 значков? Можно ли изменять размер области или значки могут занимать место, например 2 или 4 ряда в какой-то момент?