Я сделал следующий складной аккордеон с использованием фреймворка Materialize css.
Я пытаюсь разместить значки шевронов в конце сворачиваемого заголовка. Я применил класс css правильно, чтобы значок перемещался в правом конце сворачиваемого заголовка, но это не делает его полным правым концом сворачиваемого заголовка.
Как лучше всего переместить значок шеврона в крайнее правое положение складного заголовка?
$('.collapsible').collapsible();.collapsible li.active i {
-ms-transform: rotate(180deg); /* IE 9 */
-webkit-transform: rotate(180deg); /* Chrome, Safari, Opera */
transform: rotate(180deg);
}
.rotate {
-moz-transition: all .3s linear;
-webkit-transition: all .3s linear;
transition: all .3s linear;
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href = "https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" rel = "stylesheet"/>
<link href = "https://fonts.googleapis.com/icon?family=Material+Icons" rel = "stylesheet">
<script src = "https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<ul class = "collapsible">
<li>
<div class = "collapsible-header">
First
<i class = "material-icons rotate right">expand_more</i></div>
<div class = "collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
</li>
<li>
<div class = "collapsible-header">Second
<i class = "material-icons rotate right">expand_more</i>
</div>
<div class = "collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
</li>
<li>
<div class = "collapsible-header">Third
<i class = "material-icons rotate right">expand_more</i></div>
<div class = "collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
</li>
</ul>





сделай это абсолютным
.collapsible-header i {
position: absolute;
right: 0px;
}
$('.collapsible').collapsible();.collapsible li.active i {
-ms-transform: rotate(180deg); /* IE 9 */
-webkit-transform: rotate(180deg); /* Chrome, Safari, Opera */
transform: rotate(180deg);
}
.rotate {
-moz-transition: all .3s linear;
-webkit-transition: all .3s linear;
transition: all .3s linear;
}
.collapsible-header i {
position: absolute;
right: 0px;
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href = "https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" rel = "stylesheet"/>
<link href = "https://fonts.googleapis.com/icon?family=Material+Icons" rel = "stylesheet">
<script src = "https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<ul class = "collapsible">
<li>
<div class = "collapsible-header">
First
<i class = "material-icons rotate right">expand_more</i></div>
<div class = "collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
</li>
<li>
<div class = "collapsible-header">Second
<i class = "material-icons rotate right">expand_more</i>
</div>
<div class = "collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
</li>
<li>
<div class = "collapsible-header">Third
<i class = "material-icons rotate right">expand_more</i></div>
<div class = "collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
</li>
</ul>Поскольку в вашем div.collapsible-header уже есть display:flex, вы можете добавить justify-content: space-between. Это сделает ...
the first item is flush with the main-start edge, and the last item is flush with the main-end edge.
$('.collapsible').collapsible();.collapsible li.active i {
-ms-transform: rotate(180deg);
/* IE 9 */
-webkit-transform: rotate(180deg);
/* Chrome, Safari, Opera */
transform: rotate(180deg);
}
.rotate {
-moz-transition: all .3s linear;
-webkit-transition: all .3s linear;
transition: all .3s linear;
}
.collapsible-header {
justify-content: space-between;
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href = "https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" rel = "stylesheet" />
<link href = "https://fonts.googleapis.com/icon?family=Material+Icons" rel = "stylesheet">
<script src = "https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<ul class = "collapsible">
<li>
<div class = "collapsible-header">
First
<i class = "material-icons rotate right">expand_more</i></div>
<div class = "collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
</li>
<li>
<div class = "collapsible-header">Second
<i class = "material-icons rotate right">expand_more</i>
</div>
<div class = "collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
</li>
<li>
<div class = "collapsible-header">Third
<i class = "material-icons rotate right">expand_more</i></div>
<div class = "collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
</li>
</ul>Добавьте "justify-content: space-between"; в класс 'складной заголовок'.
$('.collapsible').collapsible();.collapsible li.active i {
-ms-transform: rotate(180deg); /* IE 9 */
-webkit-transform: rotate(180deg); /* Chrome, Safari, Opera */
transform: rotate(180deg);
}
.rotate {
-moz-transition: all .3s linear;
-webkit-transition: all .3s linear;
transition: all .3s linear;
}
.collapsible-header {
justify-content: space-between;
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href = "https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" rel = "stylesheet"/>
<link href = "https://fonts.googleapis.com/icon?family=Material+Icons" rel = "stylesheet">
<script src = "https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<ul class = "collapsible">
<li>
<div class = "collapsible-header">
First
<i class = "material-icons rotate right">expand_more</i></div>
<div class = "collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
</li>
<li>
<div class = "collapsible-header">Second
<i class = "material-icons rotate right">expand_more</i>
</div>
<div class = "collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
</li>
<li>
<div class = "collapsible-header">Third
<i class = "material-icons rotate right">expand_more</i></div>
<div class = "collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
</li>
</ul>Я думаю, это как ответ @ksav?
Да, я одновременно добавил и ответ. После этого он внес некоторые правки.
Также вы можете использовать row и col (сетчатую структуру) следующим образом:
$('.collapsible').collapsible();.collapsible li.active i {
-ms-transform: rotate(180deg); /* IE 9 */
-webkit-transform: rotate(180deg); /* Chrome, Safari, Opera */
transform: rotate(180deg);
}
.rotate {
-moz-transition: all .3s linear;
-webkit-transition: all .3s linear;
transition: all .3s linear;
}
.collapsible-header.row {
margin-bottom: 0;
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href = "https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" rel = "stylesheet"/>
<link href = "https://fonts.googleapis.com/icon?family=Material+Icons" rel = "stylesheet">
<script src = "https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<ul class = "collapsible">
<li>
<div class = "collapsible-header row">
<div class = "col s11">First</div>
<i class = "col s1 material-icons rotate right">expand_more</i></div>
<div class = "collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
</li>
<li>
<div class = "collapsible-header row"><div class = "col s11">Second</div>
<i class = "col s1 material-icons rotate right">expand_more</i>
</div>
<div class = "collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
</li>
<li>
<div class = "collapsible-header row"><div class = "col s11">Third</div>
<i class = "col s1 material-icons rotate right">expand_more</i></div>
<div class = "collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
</li>
</ul>Я только что добавил "display: block" в сворачиваемый заголовок, и он работал нормально ...
.collapsible-header{
display: block;
}
и добавьте только правильный класс к значку материала. это будет работать
Хороший ответ