首页 > 解决方案 > 防止元素收缩

问题描述

我正在尝试在我的网站上对这个发现菜单部分进行编码,除了一件事,当我单击View more按钮时 Js 被激活但项目缩小,我不知道为什么我试图将宽度设置为100%,但它不起作用。我在这里搜索了一点堆栈溢出但我没有发现任何有用的东西是我的代码:

.discover-ou-menu{
position: relative;

}
.section-heading{
  text-align: center;
  font-family: 'Roboto', sans-serif;
text-transform:capitalize;
margin: 0;
}
.section-heading::after{
  content: "";
  position: relative;
  left: 41rem;
  display: block;
  width: 50px;
  height: 5px;
  text-align: center;
  background-color: #ff9900;
  margin-bottom: 1.5rem;
  margin: 0;
}
/* .dom-container{
  position: relative;
} */
.nav-menu{
  text-align: center;
  padding-left: 16px;
  font-family: 'Roboto', sans-serif;
  font-weight: bold;
  text-transform: capitalize;
  font-size: 15px;
  margin-top: 5px;
  margin-bottom: 40px;
}
.nav-menu-item{
  position: relative;
  text-decoration: none;
  color: black;
  padding-right: 20px;
}
.menu{
  display: inline-block;
  font-family: 'Roboto', sans-serif;
}
.img-menu{
height: 200px;}
.menu-price{
font-size: 30px;
display: flex;
justify-content: flex-end;
}
.hide{
  display: none;
  transition: 5s ease;
}
#table{
  display: table;
}
.tr{
    display: table-row;
}
.td{
    display: table-cell;
  }
<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title></title>
</head>
<link rel="stylesheet" href="style.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">

<body>
  <section class="discover-our-menu">
    <h1 class="section-heading">discover our menu</h1>
    <nav class="nav-menu">
      <a href="#" class="nav-menu-item">main</a>
      <a href="#" class="nav-menu-item">desserts</a>
      <a href="#" class="nav-menu-item">drinks</a>
    </nav>
    <div id="table">
      <div class="tr">
        <div class="td">
          <img src="images/discover our menu/menu1.png" class="img-menu" alt="">
          <div class="menu">
            <h2 class="menu-title">1. Ricotta and strawberry tiramisu</h2>
            <p class="menu-description">A silky tiramisu made with ricotta and fresh strawberries <br>egg | sugar | milk | mascarpone | coffee | brandy | cocoa | vanilla </p>
            <p class="menu-price">30.00$</p>
          </div>
          <!--td1 end-->
        </div>
        <div class="td">
          <img src="images/discover our menu/menu2.png" class="img-menu" alt="">
          <div class="menu">
            <h2 class="menu-title">2. Halloumi and camembert salad</h2>
            <p class="menu-description">A silky tiramisu made with ricotta and fresh strawberries <br>egg | sugar | milk | mascarpone | coffee | brandy | cocoa | vanilla </p>
            <p class="menu-price">30.00$</p>
          </div>

        </div>
        <!--td2 end-->

      </div>
      <!--End of row1-->
      <div class="tr">
        <div class="td">
          <img src="images/discover our menu/menu3.png" class="img-menu" alt="">
          <div class="menu">
            <h2 class="menu-title">3. Kelp and morel salad</h2>
            <p class="menu-description">A silky tiramisu made with ricotta and fresh strawberries <br>egg | sugar | milk | mascarpone | coffee | brandy | cocoa | vanilla </p>
            <p class="menu-price">30.00$</p>
          </div>
        </div>
        <div class="td">
          <img src="images/discover our menu/menu4.png" class="img-menu" alt="">
          <div class="menu">
            <h2 class="menu-title">4. Kelp and morel salad</h2>
            <p class="menu-description">A silky tiramisu made with ricotta and fresh strawberries <br>egg | sugar | milk | mascarpone | coffee | brandy | cocoa | vanilla </p>
            <p class="menu-price">30.00$</p>
          </div>
        </div>
      </div>
      <!--end row2-->
      <div class="hide">

      <div class="tr">
        <div class="td">
          <img src="images/discover our menu/menu1.png" class="img-menu" alt="">
          <div class="menu">
            <h2 class="menu-title">1. Ricotta and strawberry tiramisu</h2>
            <p class="menu-description">A silky tiramisu made with ricotta and fresh strawberries <br>egg | sugar | milk | mascarpone | coffee | brandy | cocoa | vanilla </p>
            <p class="menu-price">30.00$</p>
          </div>
        </div>
        <div class="td">
          <img src="images/discover our menu/menu2.png" class="img-menu" alt="">
          <div class="menu">
            <h2 class="menu-title">2. Halloumi and camembert salad</h2>
            <p class="menu-description">A silky tiramisu made with ricotta and fresh strawberries <br>egg | sugar | milk | mascarpone | coffee | brandy | cocoa | vanilla </p>
            <p class="menu-price">30.00$</p>
          </div>

        </div>

      </div>
      <!--End of row3-->
      <div class="tr">
        <div class="td">
          <img src="images/discover our menu/menu3.png" class="img-menu" alt="">
          <div class="menu">
            <h2 class="menu-title">3. Kelp and morel salad</h2>
            <p class="menu-description">A silky tiramisu made with ricotta and fresh strawberries <br>egg | sugar | milk | mascarpone | coffee | brandy | cocoa | vanilla </p>
            <p class="menu-price">30.00$</p>
          </div>
        </div>
        <div class="td">
          <img src="images/discover our menu/menu4.png" class="img-menu" alt="">
          <div class="menu">
            <h2 class="menu-title">4. Kelp and morel salad</h2>
            <p class="menu-description">A silky tiramisu made with ricotta and fresh strawberries <br>egg | sugar | milk | mascarpone | coffee | brandy | cocoa | vanilla </p>
            <p class="menu-price">30.00$</p>
          </div>
        </div>
      </div>
    </div>
<span class="view" onclick="show()">View more +</span>
</div>
  </section>
  <script>
    function show(){
      document.querySelector(".hide").style.display="block";
      document.querySelector(".hide").style.width="888px";
    }
  </script>
</body>

</html>

这是“之前”的一些屏幕截图,我单击查看更多按钮和“之后

在此处输入图像描述

在此处输入图像描述

标签: javascriptcss

解决方案


只需在主元素和第 n 个子元素上使用一个类来隐藏它而不是包装它们。

document.querySelector("button").addEventListener("click", function () {
  document.querySelector('.table').classList.toggle('limited');
})
.table.limited .tr:nth-of-type(1n+4) {display: none;}
<div class="table limited">
  <div class="tr">1
  </div>
  <div class="tr">2
  </div>
  <div class="tr">3
  </div>
  <div class="tr">4
  </div>
  <div class="tr">5
  </div>
  <div class="tr">6
  </div>
</div>
<button class="more">more</button>

带动画

document.querySelector("button").addEventListener("click", function() {
  document.querySelector('.table').classList.toggle('limited');
})
.table.limited .tr:nth-of-type(1n+4) {
  max-height: 0;
  overflow: hidden;
  opacity: 0;
}

.table .tr:nth-of-type(1n+4) {
  opacity: 1;
  transition: all 1s ease-in;
  max-height: 100em;
}
<div class="table limited">
  <div class="tr">1
  </div>
  <div class="tr">2
  </div>
  <div class="tr">3
  </div>
  <div class="tr">4
  </div>
  <div class="tr">5
  </div>
  <div class="tr">6
  </div>
</div>
<button class="more">more</button>


推荐阅读