发表于: 2019-09-27 23:41:06

4 933


任务进展

一、 任务进度:50%;

① 效果呈现(在col-md即>=768px,<992px时的布局):


今日情况

1. 完成栅格系统的在不同分辨率的情况下进行适配和调整;参考(http://bs4.ntp.org.cn/pages/layout.html)

Bootstrap 4 对于Bootstrap3多出一种栅格,共有5种栅格类,依次是:

特小(col-)  (<576px)

小(col-sm-)  (>=576px)

中(col-md-)  (>=768px)

大(col-lg-)  (>=992px)

特大(col-xl-)  (>=1200px)

② 以上类似于媒体查询的方式,在对应的分辨率范围内,其相同类名前缀的元素为水平排列,直到相加大于12时,溢出的部分会换到下一行;

③ 所以要在一个栅格系统,针对各个分辨率范围来设置其所占的列数,尤其对于子元素文本宽度较小的,可以在特小的分辨率范围设置所占列数多点,如

          <ul class="row">
            <li class="col-lg col-md-2 col-sm-3 col-6">
              <a>手机软件</a>
            </li>
            <li class="col-lg col-md-2 col-sm-3 col-6">
              <a>教师招聘</a>
            </li>
            <li class="col-lg col-md-2 col-sm-3 col-6">
              <a>找工作&emsp;</a>
            </li>
            <li class="col-lg col-md-2 col-sm-3 col-6">
              <a>教师招聘</a>
            </li>
            <li class="col-lg col-md-2 col-sm-3 col-6">
              <a>找工作&emsp;</a>
            </li>
            <li class="col-lg col-md-2 col-sm-3 col-6">
              <a>手机软件</a>
            </li>
            <li class="col-lg col-md-2 col-sm-3 col-6">
              <a>教师招聘</a>
            </li>
            <li class="col-lg col-md-2 col-sm-3 col-6">
              <a>手机软件</a>
            </li>
            <li class="col-lg col-md-2 col-sm-3 col-6">
              <a>手机软件</a>
            </li>
            <li class="col-lg col-md-2 col-sm-3 col-6">
              <a>找工作&emsp;</a>
            </li>
          </ul>


④ 默认为一行总共为12列,其元素的宽度以12为分母计算百分比,都是相对于父元素的宽度,然而如果设置了间距值,即使后缀为6的两个元素,都会分为两行,所以一般不设置间距值,或者设置后,列数就要根据实际情况设置;

⑤ 如不设置列数,则会自动布局为相等宽度的列,或者在中间增加<div class="w-100"></div>,会作为拆分形式来实现多行等宽,如设置其中一个子元素的列数,其他子元素不设置或设置为auto如-col-md-auto,则会其他子元素的宽度会自动调整大小且不换行;

⑤ 而列中的元素都是默认为向左对齐,如有水平居中的标题元素,为视觉上能居中对齐,一般采用flex布局,来使列中元素都水平居中,且对于文本链接,需增加空格 &emsp; 来保证宽度一样,如:

#link .col-lg {
    padding0;
    margin-bottom1em;
    displayflex;
    justify-contentcenter;

    font-size.4em;
    color#999;
}


或者 应用bootstrap的类,相对于垂直分布来说,.align-items-center也是可以实现各元素水平居中,而.align-content-center为各元素垂直居中,而-start-end则是轴的开始位置或结束位置,可以实现上或下对齐、左或右对齐,水平分布则相反,如:

            <div class="card col-lg col-md-6 align-items-center">
              <div class="card-img-top"></div>
              <div class="card-body">
                <h5 class="card-title">高效</h5>
                <p class="card-text">
                  将五到七年的成长时间,缩短到一年到三年。
                </p>
              </div>
            </div>


而对于子元素为多行文本时,实现子元素文本为左对齐,整体相对于container为水平居中对齐,则通过偏移来实现,如:

#feature .col-lg:last-child .row {
    displayflex;
    flex-directioncolumn;
}
#feature .col-lg:last-child .container {
    transformtranslateX(40%);
/* 使人数显示区的子元素左对齐,父元素居中对齐 */


对于卡片组件的card-body而言,即有h标题标签和p段落标签,实现水平居中,只需给标题标签text-center,段落标签则是给父元素card-body设置左右padding值相同即可,如

              <div class="card-body align-items-center">
                <h5 class="card-title text-center">规范</h5>
                <p class="card-text">
                  标准的实战教程,不会走弯路。
                </p>
              </div>


#feature .card-body {
    padding0;
}
#feature .card-body .card-title {
    margin0;
    padding0;
    margin-top2em;

    font-size.5em;
    color#333;
}
#feature .card-body .card-text {
    margin-top2em;
    padding0;
    
    font-size.4em;
    color#999;
    letter-spacing0.5;
/* 定义特点区的卡片文本的布局和样式 */


⑥ 完全去除row的间距值即margin值和padding值都为0,则移除父元素的container的类名,给子元素row增加no-gutter类名,如:

<div class="row no-gutters">  

<div class="col-12 col-sm-6 col-md-8">.col-12 .col-sm-6 .col-md-8</div>  

<div class="col-6 col-md-4">.col-6 .col-md-4</div>

</div>

可以通过order类名来确定各元素的排列顺序,如order-1~12,数值越小,该元素越靠近左边,也可以用.order-first.order-last的类名来确定该行的第一个元素和最后一个元素;

⑧ 通过使用.mr-auto.ml-auto的margin工具来使各列元素彼此分离,实现两端对齐的效果,尤其增加如.ml-md-auto的分辨率范围,可以使得在对应范围内属于分离,缩小范围直到换行后,变为左对齐,不用设置offset偏移值,如:

HTML

    <footer>
      <article class="container">
        <section class="row">
          <div class="col-md-4">
            <h5>
              技能树 — 改变你我
            </h5>
            <p>
              <span>关于我们</span>
              <span class="divider"></span>
              <span>联系我们</span>
              <span class="divider"></span>
              <span>合作企业</span>
            </p>
          </div>
          <div class="col-md-4">
            <h5>
              旗下网站
            </h5>
            <p>
              <span>草船云孵化器</span>
              <span>最强IT特训营</span>
            </p>
            <p>
              <span>葡萄藤轻游戏</span>
              <span>桌游精灵</span>
            </p>
          </div>
          <div class="col-md-2 ml-md-auto">
            <h5>
              微信公众平台
            </h5>
            <p class="qrcode"></p>
          </div>
        </section>
      </article>
      <!--页脚板块-->
    </footer>


实现在md范围内即>=768px时:

缩小到sm范围即<768px时

⑨ 可以实现列的嵌套,即在col类名元素下再增加col子元素,同样具有将父元素分为12份的效果,由此进行进一步的细分元素所占列数;


2. 实现官网页首的按钮跳动动画,但不知道为什么,popover弹出框组件失效,tooltip提示框却是浏览器的默认样式,没有应用bootstrap的样式,还在寻找问题所在;

总算知道问题在哪,通过chrome浏览器报错的提示,发现引用npm下载好的bootstrap本地文件,还要多引用popper.js文件才生效,如:

    <script type="text/javascript" src="../PCweb/bootstrap/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
    <script type="text/javascript" src="../PCweb/bootstrap/bootstrap.min.js"></script>
    <script>
      $(function() {
        $('[data-toggle="popover"]').popover();
      }); //弹出提示框的触发条件
    </script>
  </body>

效果:


HTML

      <div class="btn-group" role="group" aria-label="Basic example">
        <button type="button" class="btn"></button>
        <button
          id="weixin"
          type="button"
          class="btn"
          data-toggle="popover"
          data-placement="bottom"
          data-trigger="hover"
          title="微信公众平台"
          data-content=" "
        ></button>
        <button type="button" class="btn"></button>


CSS

@keyframes jump {
    0%,
    100% {
        transformtranslateY(0)
    }
    50% {
        transformtranslateY(-0.4em);
    }
}
#home .btn-group .btn:hover {
    animation: jump 1s ease;
/* 定义按钮组的悬浮状态动画 */


#home .popover .popover-header {
    font-size0.5em;
    backgroundnone;
}
#home .popover .popover-body {
    width6em;
    height6em;

    backgroundurl(../PCweb/img/qrcode@3x.pngno-repeat;
    background-sizecover;
/* 定义提示弹出框的样式 */


三、 明天任务

1.  继续完成剩余两页并应用bootstrap对应的组件;

2.  再多看几遍bootstrap4的文档,尽量采用工具中的类名,代替间距、边框、布局等css样式;


返回列表 返回列表
评论

    分享到