iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 1
0
自我挑戰組

前端新手的學習筆記系列 第 1

Day01:每天一個小練習 - Bootstrap時間軸

  • 分享至 

  • xImage
  •  

第一次參加,感覺非常緊張。
目前購買了六角學院的課程正在努力吸收,希望用鐵人賽記錄自己每天的練習。
現在的學習進度到Bootstrap,就從Bootstrap開始記錄吧。


先畫出基本架構

	<div class="container">
        <div class="timeLine">
            <div class="row">
                <div class="col-sm-6"></div>
                <div class="col-sm-6"></div>
            </div>
        </div>
    </div>

把內容填入兩個<div class="col-sm-6"></div>

	<div class="container">
        <div class="timeLine">
            <div class="row my-3">
						<!-- my-3 使上下有16px的推擠 -->
                <div class="col-sm-6">
                    <h3>這是標題</h3>
                    <p>略</p>
                </div>
                <div class="col-sm-6">
                    <div class="box"></div>
                </div>
            </div>
        </div>
    </div>
html,
body {
    background-color: #dad7cd;
    color: #344e41;
}
.box {
    height: 100px;
    background-color: #a3b18a;
    border: 1px solid #588157;
}

把row這段複製3次

<div class="container">
        <div class="timeLine">
            <div class="row my-3">
                <div class="col-sm-6">
                    <h3>這是標題</h3>
                    <p>略</p>
                </div>
                <div class="col-sm-6">
                    <div class="box"></div>
                </div>
            </div>
            <div class="row my-3">
                <div class="col-sm-6">
                    <h3>這是標題</h3>
                    <p>略</p>
                </div>
                <div class="col-sm-6">
                    <div class="box"></div>
                </div>
            </div>
            <div class="row my-3">
                <div class="col-sm-6">
                    <h3>這是標題</h3>
                    <p>略</p>
                </div>
                <div class="col-sm-6">
                    <div class="box"></div>
                </div>
            </div>
        </div>
    </div>

把想要反向排列的row區塊加上flex-row-reverse

<div class="row my-3 flex-row-reverse">

為了限制尺寸,多加一個sm會更完美

<div class="row my-3 flex-sm-row-reverse">

中間的線要使用偽元素,以下寫好後線會出現在左邊

.timeLine {
    position: relative;
    &::after {
        content:""; //偽元素的起手式,一定要有才會呈現
        position: absolute;
        top: 0;
        bottom: 0;
        width: 3px;
        background-color: #344e41;
    }
}

把線移到中間

.timeLine {
    position: relative;
    &::after {
        content:""; //偽元素的起手式,一定要有才會呈現
        position: absolute;
        top: 0;
        bottom: 0;
        left: 50%;//會發現有點偏右,因為有3px的寬度
        width: 3px;
        transform: translateX(-50%);//把3px的寬度往左拉回一半中間
        background-color: #344e41;
    }
}

每個row增加一個叫timeLine-pointer的class用來製作圓點

<div class="row my-3 timeLine-pointer">

加上設定

.timeLine-pointer {
    position: relative;
    &::after {
        content: '';
        position: absolute;
        top: 0;
        bottom: 0;
        left: 50%;
        width: 10px;
        height: 10px;
        transform: translateX(-50%);
        background-color: #344e41;
    }
}

把方塊改成中空的圓點

.timeLine-pointer {
    position: relative;
    &::after {
        content: '';
        position: absolute;
        top: 0;
        bottom: 0;
        left: 50%;
        width: 10px;
        height: 10px;
        border-radius: 50%;//畫出圓形
        border:3px solid #344e41;
        transform: translateX(-50%);
        background-color: #dad7cd;//改變背景色
        z-index: 1;//把位置移到中間線上方
    }
}

為了避免變成一行後還會出現中間線,可以在特定寬度隱藏

576px來自bootstrap內的響應式斷點

//注意bootstrap是從手機板開始寫
@media (max-width: 576px) {//用min會變成576px以下才出現
    .timeLine::after {
        display: none;
    }
    .timeLine-pointer::after {
        display: none;
    }
}

之後自行美化即可

練習完成畫面
https://ithelp.ithome.com.tw/upload/images/20200915/20121534H3laFhAykL.png

https://codepen.io/sesame55/pen/KKzZPMZ


下一篇
Day02:每天一個小練習 - Bootstrap動態傳入Modal參數
系列文
前端新手的學習筆記32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言