#javascript #jquery #html #css
#javascript #jquery #HTML #css
Вопрос:
У меня есть боковая панель, которая содержит 2 раздела
<div class="sectionsContainer clearfix"><-- Sidebar -->
<div class="leftSection pull-left">
<p>Maor</p>
</div>
<div class="rightSection pull-right">
<div class="backButton clearfix">
<i class="fa fa-chevron-left fa-2x blueColor pull-left"></i>
<p class="pull-left"><strong>Back</strong></p>
</div>
<button class="btn blueButton ng-scope" data-ng-click="openPopover()"><i class="fa fa-plus"></i></button>
<div class="popover fade bottom in">
<div class="arrow"></div>
<div class="popover-content">...</div>
</div>
</div>
</div>
у них обоих есть class:
.leftSection, .rightSection {
width:50%;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-ms-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;
}
Когда я нажимаю на основной элемент, оба leftSection и rightSection получают класс «moveLeft»:
.moveLeft {
-ms-transform: translate(-100%,0); /* IE 9 */
-webkit-transform: translateX(-100%); /* Chrome, Safari, Opera */
transform: translate(-100%,0); /* Standard syntax */
-webkit-transform-style: preserve-3d;
}
в результате div «leftSection» перемещается влево, а «rightSection» перемещается влево, и вы можете видеть только «rightSection», потому что они оба находятся в разделе «переполнение: скрытый» div.
всплывающий div является:
position:absolute;
top:0;
left:0;
max-width:276px;
padding:1px;
text-align:left;
background-color:#FFF;
background-clip:padding-box;
border:1px solid rgba(0,0,0,0.2);
border-radius:6px;
box-shadow: 0 5px 10px rgba(0,0,0,0.2);
теперь, когда я нажимаю на:
<button class="btn blueButton ng-scope" data-ng-click="openPopover()"><i class="fa fa-plus"></i></button>
всплывающий div получает относительное положение к rightSection
Я проверил это, и это потому, что moveLeft использует свойство translate
У кого-нибудь есть идея?
Ответ №1:
Похоже, что функция translate внутренне использует относительное положение для перевода элементов. И если у вас есть элемент с абсолютным позиционированием в родительском элементе с относительным позиционированием, позиция определяется относительно родительского элемента.
Таким образом, единственный вариант, который у вас есть, — это переместить popover
div из относительно расположенного родительского элемента. Обычно я размещаю их непосредственно в теле:
<body>
<div class="sectionsContainer clearfix"><-- Sidebar -->
<div class="leftSection pull-left">
<p>Maor</p>
</div>
<div class="rightSection pull-right">
<div class="backButton clearfix">
<i class="fa fa-chevron-left fa-2x blueColor pull-left"></i>
<p class="pull-left"><strong>Back</strong></p>
</div>
<button class="btn blueButton ng-scope" data-ng-click="openPopover()"><i class="fa fa-plus"></i></button>
</div>
</div>
<div class="popover fade bottom in">
<div class="arrow"></div>
<div class="popover-content">...</div>
</div>
</body>