Ширина перехода CSS влево

#html #css #css-transitions

#HTML #css #css-переходы

Вопрос:

Я пытаюсь взять div, у которого всегда отображается интервал, и абзац, который находится под ним, отображается при наведении курсора мыши на div. То, что у меня работает, за исключением того, что я хочу, чтобы некоторые из этих div меняли ширину, чтобы они переходили вниз, а затем влево. По умолчанию (и я предполагаю, что браузер по умолчанию), кажется, всегда находится вниз, а затем вправо.

Ссылка на скрипку и код ниже. Есть два красных блока div с текстом заголовка, при наведении на которые ширина увеличивается, и отображается абзац под ним. Что я хочу сделать, так это переместить нижний правый div (заголовок Here2 текст) влево. Таким образом, красный фон вообще не будет переходить вправо.

ПРИМЕЧАНИЕ: положение элементов div на странице не может измениться.

http://jsfiddle.net/szfiddle/qP5fW/1/

HTML

 <div class="hpBox">
    <span>Title Here</span>
    <p>Text here. Text here. Text here. Text here. Text here. Text here. Text here. Text here. Text here. Text here. Text here.</p>
</div>
<div class="hpBox hpBox2">
    <span>Title Here2</span>
    <p>Text here. Text here. Text here. Text here. Text here. Text here. Text here. Text here. Text here. Text here. Text here.</p>
</div>
  

CSS

 .hpBox {
    display: inline-block;
    padding: 10px;
    background: red;
    -webkit-transition: 1s linear;
    transition: 1s linear;
    max-width:200px;
    max-height:22px;
    position:absolute;
}
.hpBox p {
    max-height: 0;
    max-width: 0;
    overflow: hidden;
    -webkit-transition: 2s linear;
    transition: 2s linear;
}
.hpBox:hover {
    max-width:400px;
    max-height:200px;
}
.hpBox:hover p {
    max-height: 200px;
    max-width: 400px;
}
.hpBox2 {
  left:60%;
  top:250px;
}
  

Ответ №1:

Попробуйте выполнить следующее:

  .hpBox2 {
   top:250px;
   right: 20%;
   text-align: right;
 }
  

Комментарии:

1. Идеальный. Не нужно выравнивать текст по правому краю, но работает.

Ответ №2:

Я боролся с этим и после нескольких поисков нашел решение в CodePen.

Вот ссылка: http://codepen.io/heisters/pen/gMgboJ

Сработало для меня.

HTML

 <div>
  <h1>Normal</h1>
  <item>One</item>
  <item>Two</item>
  <item>Three</item>
  <item>Four</item>
</div>
<div class="grow-left">
  <h1>Grow Left</h1>
  <item>One</item>
  <item>Two</item>
  <item>Three</item>
  <item>Four</item>
</div>
  

CSS:

 div {
  display: block;
  width: 200px;
  margin: auto;
  background-color: #EEE;
}
item {
  display: block;
  background-color: #FDD;
  transition: all, 0.5s;
  width: 200px;
}

item:hover {
  width: 400px;
}

.grow-left {
  direction: rtl;
}
.grow-left > * {
  direction: ltr;
}
  

HTH

Дэйв

Ответ №3:

Попробуйте выполнить следующее:

    .hpBox2 {
    top: 250px
    right: 40%;
    text-align: right;
  }
  

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

 .hpBox {
    /* ... */
    overflow:hidden;
}
  

Ответ №4:

Один из способов сделать это — установить right свойства и bottom вместо свойств top и left .

 .hpBox2 {
  right: 35%;
  bottom: -121px;
}
  

Обновлен jsfiddle