【问题标题】:How to vertically center a div on page when changing content?更改内容时如何在页面上垂直居中 div?
【发布时间】:2018-02-21 16:37:37
【问题描述】:

我在卡片上有一些小文字,我可以垂直对齐中心。 但如果你把文本变大,那么一切都会恶化。

我做了两个选择,它们彼此独立工作,但不能一起工作。在大文本中,一些文本会丢失。

重要提示:文本应始终垂直居中。

.article-div{
    height: calc(100% - 100px);
    padding: 0px 40px 0px 40px;
    text-align: justify;
    overflow: auto;
}

大文:CodePen

.article-div{
    height: calc(100% - 100px);
    display: flex;
    flex: 1 0 auto;
    flex-direction: column;
    flex-wrap: wrap;
    align-content: center;
    justify-content:  center;
    padding: 0px 40px 0px 40px;
    text-align: justify;
    overflow: auto;
}

小文本:CodePen

谢谢!

【问题讨论】:

  • 两个 CodePen 有相同的链接。
  • 没有。链接不一样。两者都显示了大文本和小文本的正确工作。

标签: html css flexbox vertical-alignment


【解决方案1】:

你不需要包装flexbox

  1. article-div 中删除flex-wrap: wrap(因此align-content: center 只有在包装时才有意义)

  2. article-div 不是 flex 项(其父级 info-div 不是 flexbox),因此可以删除 flex: 1 0 auto

请参见下面的演示:

.card-card {
  width: 1000px;
  min-width: 1000px;
  height: 560px;
  display: flex;
  margin: 50px auto;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
  transition: all 0.3s cubic-bezier(.25, .8, .25, 1);
  text-decoration: none;
  border-radius: 0px;
  background-color: #fff;
}

.card-img-div {
  width: 384px;
  height: 560px;
  position: relative;
}

.card-img {
  height: 560px;
  border-radius: 0px 0 0 0px;
  position: absolute;
  clip: rect(0px, 384px, 562px, 0px);
  left: -0px;
}

.info-div {
  width: 616px;
  height: 100%;
  border-radius: 0 0px 0px 0;
}

.caption-div {
  width: 100%;
  height: 50px;
}

.footer-div {
  width: 100%;
  height: 50px;
}

.article-div {
  height: calc(100% - 100px);
  display: flex;
  /*flex: 1 0 auto;*/
  flex-direction: column;
  /*flex-wrap: wrap;
  align-content: center;*/
  justify-content: center;
  padding: 0px 40px 0px 40px;
  text-align: justify;
  overflow: auto;
}
<div class="card-card">
  <div class="card-img-div">
    <img class="card-img" src="http://podsekai.in.ua/wp-content/uploads/2015/02/карась-серебряный.jpg" />
  </div>
  <div class="info-div">
    <div class="caption-div"></div>
    <div class="article-div">
<p>Карась — рыба семейства карповых, которая в нашей стране водится практически повсеместно. Это пресноводная рыба, которая может жить как в реках, так и в озерах со стоячей водой. Караси неприхотливы к условиям проживания и питанию, поэтому водятся практически в каждом водоеме.
</p>
<p>
Спинной плавник длинный<span lvl="3">, глоточные зубы однорядные</span>. Тело высокое с толстой спиной, умеренно сжатое с боков. Чешуя крупная и гладкая на ощупь. Окраска варьирует в зависимости от места обитания. 
  </p>
    </div>
      
    <div class="footer-div"></div>
  </div>
 </div>
 
 <div class="card-card">
  <div class="card-img-div">
    <img class="card-img" src="http://podsekai.in.ua/wp-content/uploads/2015/02/карась-серебряный.jpg" />
  </div>
  <div class="info-div">
    <div class="caption-div"></div>
    <div class="article-div">
<p>Карась — рыба семейства карповых, которая в нашей стране водится практически повсеместно. Это пресноводная рыба, которая может жить как в реках, так и в озерах со стоячей водой. Караси неприхотливы к условиям проживания и питанию, поэтому водятся практически в каждом водоеме.
</p>
<p>
Спинной плавник длинный<span lvl="3">, глоточные зубы однорядные</span>. Тело высокое с толстой спиной, умеренно сжатое с боков. Чешуя крупная и гладкая на ощупь. Окраска варьирует в зависимости от места обитания. 
  </p>
<p>Карась — рыба семейства карповых, которая в нашей стране водится практически повсеместно. Это пресноводная рыба, которая может жить как в реках, так и в озерах со стоячей водой. Караси неприхотливы к условиям проживания и питанию, поэтому водятся практически в каждом водоеме.
</p>
<p>
Спинной плавник длинный<span lvl="3">, глоточные зубы однорядные</span>. Тело высокое с толстой спиной, умеренно сжатое с боков. Чешуя крупная и гладкая на ощупь. Окраска варьирует в зависимости от места обитания. 
  </p>
<p>Карась — рыба семейства карповых, которая в нашей стране водится практически повсеместно. Это пресноводная рыба, которая может жить как в реках, так и в озерах со стоячей водой. Караси неприхотливы к условиям проживания и питанию, поэтому водятся практически в каждом водоеме.
</p>
<p>
Спинной плавник длинный<span lvl="3">, глоточные зубы однорядные</span>. Тело высокое с толстой спиной, умеренно сжатое с боков. Чешуя крупная и гладкая на ощупь. Окраска варьирует в зависимости от места обитания. 
  </p>
<p>Карась — рыба семейства карповых, которая в нашей стране водится практически повсеместно. Это пресноводная рыба, которая может жить как в реках, так и в озерах со стоячей водой. Караси неприхотливы к условиям проживания и питанию, поэтому водятся практически в каждом водоеме.
</p>
<p>
Спинной плавник длинный<span lvl="3">, глоточные зубы однорядные</span>. Тело высокое с толстой спиной, умеренно сжатое с боков. Чешуя крупная и гладкая на ощупь. Окраска варьирует в зависимости от места обитания. 
  </p>      
    </div>
      
    <div class="footer-div"></div>
  </div>
 </div>

上述方法在溢出时隐藏了内容的顶部和底部。下面是一种使用绝对定位额外包装器的方法 - 看看吧:

.card-card {
  width: 1000px;
  min-width: 1000px;
  height: 560px;
  display: flex;
  margin: 50px auto;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
  transition: all 0.3s cubic-bezier(.25, .8, .25, 1);
  text-decoration: none;
  border-radius: 0px;
  background-color: #fff;
}

.card-img-div {
  width: 384px;
  height: 560px;
  position: relative;
}

.card-img {
  height: 560px;
  border-radius: 0px 0 0 0px;
  position: absolute;
  clip: rect(0px, 384px, 562px, 0px);
  left: -0px;
}

.info-div {
  width: 616px;
  height: 100%;
  border-radius: 0 0px 0px 0;
}

.caption-div {
  width: 100%;
  height: 50px;
}

.footer-div {
  width: 100%;
  height: 50px;
}

.article-div {
  height: calc(100% - 100px);
  /*padding: 0px 40px 0px 40px;*/
  text-align: justify;
  overflow: auto;
  position: relative;
}

.article-div>div {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: calc(100% - 80px);
  max-height: 100%;
  display: flex;
  flex-direction: column;
}
<div class="card-card">
  <div class="card-img-div">
    <img class="card-img" src="http://podsekai.in.ua/wp-content/uploads/2015/02/карась-серебряный.jpg" />
  </div>
  <div class="info-div">
    <div class="caption-div"></div>
    <div class="article-div">
      <div>
        <p>Карась — рыба семейства карповых, которая в нашей стране водится практически повсеместно. Это пресноводная рыба, которая может жить как в реках, так и в озерах со стоячей водой. Караси неприхотливы к условиям проживания и питанию, поэтому водятся
          практически в каждом водоеме.
        </p>
        <p>
          Спинной плавник длинный<span lvl="3">, глоточные зубы однорядные</span>. Тело высокое с толстой спиной, умеренно сжатое с боков. Чешуя крупная и гладкая на ощупь. Окраска варьирует в зависимости от места обитания.
        </p>
      </div>
    </div>

    <div class="footer-div"></div>
  </div>
</div>

<div class="card-card">
  <div class="card-img-div">
    <img class="card-img" src="http://podsekai.in.ua/wp-content/uploads/2015/02/карась-серебряный.jpg" />
  </div>
  <div class="info-div">
    <div class="caption-div"></div>
    <div class="article-div">
      <div>
        <p>Карась — рыба семейства карповых, которая в нашей стране водится практически повсеместно. Это пресноводная рыба, которая может жить как в реках, так и в озерах со стоячей водой. Караси неприхотливы к условиям проживания и питанию, поэтому водятся
          практически в каждом водоеме.
        </p>
        <p>
          Спинной плавник длинный<span lvl="3">, глоточные зубы однорядные</span>. Тело высокое с толстой спиной, умеренно сжатое с боков. Чешуя крупная и гладкая на ощупь. Окраска варьирует в зависимости от места обитания.
        </p>
        <p>Карась — рыба семейства карповых, которая в нашей стране водится практически повсеместно. Это пресноводная рыба, которая может жить как в реках, так и в озерах со стоячей водой. Караси неприхотливы к условиям проживания и питанию, поэтому водятся
          практически в каждом водоеме.
        </p>
        <p>
          Спинной плавник длинный<span lvl="3">, глоточные зубы однорядные</span>. Тело высокое с толстой спиной, умеренно сжатое с боков. Чешуя крупная и гладкая на ощупь. Окраска варьирует в зависимости от места обитания.
        </p>
        <p>Карась — рыба семейства карповых, которая в нашей стране водится практически повсеместно. Это пресноводная рыба, которая может жить как в реках, так и в озерах со стоячей водой. Караси неприхотливы к условиям проживания и питанию, поэтому водятся
          практически в каждом водоеме.
        </p>
        <p>
          Спинной плавник длинный<span lvl="3">, глоточные зубы однорядные</span>. Тело высокое с толстой спиной, умеренно сжатое с боков. Чешуя крупная и гладкая на ощупь. Окраска варьирует в зависимости от места обитания.
        </p>
        <p>Карась — рыба семейства карповых, которая в нашей стране водится практически повсеместно. Это пресноводная рыба, которая может жить как в реках, так и в озерах со стоячей водой. Караси неприхотливы к условиям проживания и питанию, поэтому водятся
          практически в каждом водоеме.
        </p>
        <p>
          Спинной плавник длинный<span lvl="3">, глоточные зубы однорядные</span>. Тело высокое с толстой спиной, умеренно сжатое с боков. Чешуя крупная и гладкая на ощупь. Окраска варьирует в зависимости от места обитания.
        </p>
      </div>
    </div>

    <div class="footer-div"></div>
  </div>
</div>

【讨论】:

  • 看。在大文本上,上面的段落消失了。
  • 添加了一个附加层后,一切都开始工作了,谢谢!
【解决方案2】:
.article-div{
   border:solid 1px red;
   height: calc(100% - 100px);
   display: flex;
   flex: 1 0 auto;
   flex-flow: column nowrap;
   align-content: center;
   justify-content:  center;
   padding: 0px 40px 0px 40px;
   text-align: justify;
   overflow: auto;
}
.article-div p{
   flex: 0 0 auto;  
}

Small text Code pen

【讨论】:

  • 看。在大文本上,上面的段落消失了。
  • 我没有看到任何错误。所有段落从头到尾从头开始。溢出工作正常。我用的是yandex浏览器v17.7.1.791(最后)。
  • Vivaldi 1.11.917.43(稳定通道)
猜你喜欢
  • 1970-01-01
  • 2018-04-25
  • 2017-06-30
  • 2014-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
  • 2012-06-03
相关资源
最近更新 更多