javascript - 下拉菜单主体上的 Accordion 框阴影

标签 javascript html css bootstrap-4

我正在为我的站点开发一个 Accordion 控件,它嵌套在一张卡片中 我在 Accordion 的标题中添加了一个框阴影,看起来不错,但是当我展开它时,主体会弹出一个阴影。 我想弄清楚的是一种在 body 上有阴影但不会在 Accordion 展开时弹出的方法。我已经设置了这个例子

/* CSS used here will be applied after bootstrap.css */

.recent-posts {
  background: #D2C198;
  margin-left: 400px;
  margin-right: 400px;
}

.post-card {
  background-color: #D2C198;
}

.reply-link,
.reply-link:hover,
.reply-link:active,
.reply-link:visited,
.user-post,
.user-post:hover,
.user-post:active,
.user-post:visited {
  color: #222222;
  text-decoration: none !important;
}

.card-header {
  -webkit-box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  -moz-box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}

.post-body {
  -webkit-box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  -moz-box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}

.post-reply {
  padding-bottom: 10px;
}

.forum-image {
  border-radius: 50%;
  width: 100px;
  height: 100px;
  object-fit: cover;
}

.post-header {
  padding-left: 30px;
  height: 25px;
  margin-left: 86px;
}

.post-divider {
  border-bottom: 1px solid #222;
  padding-top: 5px;
}

.avatar {
  width: 50px;
  height: 50px;
  border-radius: 50%;
}

.header-forum-badge {
  float: left;
}

.post-info {
  padding-top: 10px;
}

.user-post {
  display: inline-flex;
  margin-left: 14px;
}

.user-post-avatar {
  margin-right: 12px;
}

.post-views-replies {
  float: right;
  text-align: right;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<div class="card recent-posts">
  <div class="card-body">
    <div id="post-accordian">
      <div class="card post-card">

        <div class="card-header" id="post-heading" onmouseover="" data-toggle="collapse" data-target="#post-collapse" aria-expanded="true" aria-controls="post-collapse">
          accordian header
        </div>
        <!-- Collapse panel -->
        <div id="post-collapse" class="collapse post-container" aria-labelledby="post-heading" data-parent="#post-accordian">
          <div class="card-body post-body">

            <!-- collapse panel content -->
            accordian body
            <!-- End collapse panel content -->

          </div>
        </div>
      </div>
    </div>
  </div>
</div>

有没有办法解决这个问题,让它只是一个平滑的过渡,这样当它展开时,盒子阴影看起来就像围绕着两个元素?

最佳答案

你当然可以。只需将框阴影应用于其父元素即可。在这种情况下,.post-card 容器。

/* CSS used here will be applied after bootstrap.css */

.recent-posts {
  background: #D2C198;
  /*margin-left: 400px;
  margin-right: 400px; disabled because it looks bad in SO snippet*/
}

.post-card {
  background-color: #D2C198;
  -webkit-box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  -moz-box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}

.reply-link,
.reply-link:hover,
.reply-link:active,
.reply-link:visited,
.user-post,
.user-post:hover,
.user-post:active,
.user-post:visited {
  color: #222222;
  text-decoration: none !important;
}

/*.card-header {
  -webkit-box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  -moz-box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}

.post-body {
  -webkit-box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  -moz-box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}*/

.post-reply {
  padding-bottom: 10px;
}

.forum-image {
  border-radius: 50%;
  width: 100px;
  height: 100px;
  object-fit: cover;
}

.post-header {
  padding-left: 30px;
  height: 25px;
  margin-left: 86px;
}

.post-divider {
  border-bottom: 1px solid #222;
  padding-top: 5px;
}

.avatar {
  width: 50px;
  height: 50px;
  border-radius: 50%;
}

.header-forum-badge {
  float: left;
}

.post-info {
  padding-top: 10px;
}

.user-post {
  display: inline-flex;
  margin-left: 14px;
}

.user-post-avatar {
  margin-right: 12px;
}

.post-views-replies {
  float: right;
  text-align: right;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<div class="card recent-posts">
  <div class="card-body">
    <div id="post-accordian">
      <div class="card post-card">

        <div class="card-header" id="post-heading" onmouseover="" data-toggle="collapse" data-target="#post-collapse" aria-expanded="true" aria-controls="post-collapse">
          accordian header
        </div>
        <!-- Collapse panel -->
        <div id="post-collapse" class="collapse post-container" aria-labelledby="post-heading" data-parent="#post-accordian">
          <div class="card-body post-body">

            <!-- collapse panel content -->
            accordian body
            <!-- End collapse panel content -->

          </div>
        </div>
      </div>
    </div>
  </div>
</div>

关于javascript - 下拉菜单主体上的 Accordion 框阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52302093/

相关文章:

中间图像的 html/css 格式和外部的四个 div

php - 单选按钮显示悬停在两个单选按钮之间使用 jquery

javascript - 构建应用程序后 Electron index.html 未加载

javascript - 如何在 Cx 的字段值表达式中使用自定义全局函数?

javascript - 如何使用查询字符串渲染组件 React-Router

css - 我如何知道文本何时从一个 CSS 区域溢出到另一个区域?

css - 将 SCSS `@extends` 与深层元素样式一起使用

JavaScript 帮助。向 DOM 添加/删除表单元素

javascript - jQuery 包含选择器,用于在将 div 分组到子组时搜索多个字符串

javascript - 视差脚本在 chrome 和移动设备上变得迟缓