添加内容后如何平滑div高度变化

Posted

技术标签:

【中文标题】添加内容后如何平滑div高度变化【英文标题】:How to smoothen div height change after adding content 【发布时间】:2019-01-16 23:28:04 【问题描述】:

A 有一个带有 div 的轮播,每次幻灯片更改时都会调整其高度。然而,过渡并不顺利,边界只是跳进跳出。如何使用 css 或 jQuery 让它变得又好又流畅?我正在考虑使用 jQuery 的“盲”动画,但我不知道如何设置它。

添加“过渡:高度2s;”对 div 的 css 规则也不起作用。

.specs 
	height: 100vh;
    background: url("https://images.unsplash.com/photo-1505663912202-ac22d4cb3707?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=1a078798f813a2aba758a36f972fb0f6&auto=format&fit=crop&w=1500&q=80") no-repeat  center center;
    background-size: cover;
	text-shadow: 1px 1px black;


.backgroundSpecs 
	padding-top: 7vh;
	height: 100%;
	width: 100vw;
	background-color: rgba(57, 56, 56, 0.5);
	display: flex;
    align-items: center;
	justify-content: center;


.fieldsetSpecs 
	height: auto;
	width: 50vw;
    border: 2px solid white;
    padding: 5% 15% 5% 15%;
    color: white;
    text-align: center;
    display: flex;
    justify-content: center;
    transition: height 2s;


.legendSpecs 
	color: white;
	width: auto;
	border: none;
	margin: 0;
	padding: 0 5vw 0 5vw;


/*karuzela specjalizacji*/

.specs #myCarousel2 .carousel-inner .active 
	height: 100%;
	background: none;


.specs #myCarousel2 
	height: 100%;


.specs .carousel-inner 
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;


.specs .carousel-indicators 
	top: -10%;
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
	<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous">
  <div class="specs" id="specs">
      <div class="backgroundSpecs">
        <div class="row">
          <div class="col-lg-12 col-md-12 col-sm-12">
            <fieldset class="fieldsetSpecs">
              <legend class="legendSpecs">SPECJALIZACJE</legend>
              <div id="myCarousel2" class="carousel slide" data-ride="carousel" data-interval="10000">
                <!--CAROUSEL INDICATORS-->
                <ol class="carousel-indicators">
                    <li data-target="#myCarousel2" data-slide-to="0" class="active"></li>
                    <li data-target="#myCarousel2" data-slide-to="1"></li>
                    <li data-target="#myCarousel2" data-slide-to="2"></li>
                    <li data-target="#myCarousel2" data-slide-to="3"></li>
                </ol>	
                <!--WRAPPER FOR SLIDES-->
                <div class="carousel-inner" role="listbox">

                    <div class="item active">
                      <div>

                          <h4>Sprawy gospodarcze</h4>
                          <p>kompleksowa obsługa i doradztwo prawne osób fizycznych i prawnych, polskich i zagranicznych, sporządzenie i opiniowanie umów cywilnoprawnych w językach polskim i angielskim, procesy inwestycyjne, wykonanie i nienależyte wykonanie zobowiązań, egzekucja wierzytelności, due dilligence przedsiębiorstw, prawo nowych technologii, tworzenie i rejestracja spółek, wnioski do KRS, obsługa, fuzji, podziałów i przekształceń podmiotów gospodarczych oraz procesów likwidacji.</p>
                    </div>
                    </div>
                  <div class="item">
                        <div>
                          <h4>Sprawy z zakresu prawa pracy</h4>
                      <p>reprezentacja firm w postępowaniach sądowych z zakresu prawa pracy, doradztwo i reprezentacja pracowników w sporach z pracodawcami, nawiązanie stosunku pracy, wynagrodzenie za pracę i inne świadczenia pracownicze, przywrócenie do pracy, odszkodowanie za nieuzasadnione rozwiązanie umowy o pracę, mobbing, sporządzanie i opiniowanie regulaminów pracy, regulaminów wynagradzania oraz układów zbiorowych pracy, pomoc w rozwiązywaniu sporów zbiorowych ze związkami zawodowymi, odszkodowanie należne z tytułu wypadku przy pracy i choroby zawodowej</p>
                        </div>
                      </div>
                    <div class="item">
                        <div>
                          <h4>Sprawy z zakresu prawa nieruchomości i prawa administracyjnego</h4>
                      <p>obsługa transakcji sprzedaży, kupna, najmu nieruchomości,  wykonywanie audytów prawnych nieruchomości (due dilligence), doradztwo w celu ograniczenia lub eliminacji ryzyk przy zakupie nieruchomości, obsługa transakcji nieruchomości, obsługa prawna wspólnot mieszkaniowych oraz członków wspólnot mieszkaniowych w sprawach dotyczących m.in. służebności, zniesienia współwłasności, eksmisji, robót budowlanych, reprezentowanie przed organami administracyjnymi, w tym przed organami nadzoru budowlanego, organami architektoniczno-budowalnymi w trakcie całego procesu budowlanego, reprezentacja w postępowaniach administracyjnych i sądowo-administracyjnych</p>
                        </div>
                    </div>
                    <div class="item">
                        <div>
                          <h4>Sprawy cywilne</h4>
                      <p>sprawy o zapłatę, wykonanie/niewykonanie/nienależyte wykonanie umów i zobowiązań , dochodzenie odszkodowań, zadośćuczynień (wypadki komunikacyjne, szkody osobowe, szkody majątkowe), sprawy dotyczące nieruchomości i praw rzeczowych (zasiedzenie, służebności, zniesienie współwłasności nieruchomości, wydanie nieruchomości, ochrona posiadania), spadki (stwierdzenia nabycia spadku, dział spadku, zachowek,  testament,  wydziedziczenie)</p>
                        </div>
                      </div>
                </div>
              </div>
            </div>
          </fieldset>
        </div>	
      </div>
    </div>
  
<script type = "text/javascript" src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script type = "text/javascript" src = "https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
	<script type="text/javascript" src="scripts.js"></script>  
  

【问题讨论】:

【参考方案1】:

当属性设置为自动时,CSS 高度过渡不起作用。您需要手动更改 fieldsetSpecs div 的高度才能使转换生效。幸运的是,这很容易做到,因为您可以监听slide.bs.carousel 事件并相应地更改元素的高度。将此添加到您的页面:

<script>
     $('#myCarousel2').on('slide.bs.carousel', function (event) 
         $('.fieldsetSpecs').height($(event.relatedTarget).height());
     )
</script>

你很高兴!

【讨论】:

解决方案效果很好,非常感谢!还有一件事:字段集现在可以完美地动画,但是在它滑动之后,文本会稍微超出字段集的内容,并且非常接近底部边框。我该如何解决这个问题,以使文本始终保持在字段集的最中心 - 就像加载页面时一样,在第一张幻灯片更改之前? 只需在 Javascript 中的 fieldsetSpecs div 中增加一点高度。尝试从多 30 个像素左右开始。 好的,加了 30 就可以了。最后一个问题:我能做些什么来让这个旋转木马在 safari 上运行良好吗?我的朋友在 mac 上检查了它,每次幻灯片更改时,fieldset 的边界都会被吹到视口之外。我没有野生动物园,所以我很难检查出来 不幸的是,我也不使用 Safari,所以对此我无能为力。对不起!

以上是关于添加内容后如何平滑div高度变化的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 检测 div 的高度何时发生变化

iframe的高度可以随内容的多少而变化吗

React 监听子元素dom内容高度变化

div元素监听resize的方法

如何使用 javascript 获取动态变化的 div 的高度? [复制]

设置DIV最小高度以及高度自适应随着内容的变化而变化