iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
0
自我挑戰組

向CSScoke重新學習CSS系列 第 21

第二十一天:方塊版 和 Icon搖擺版

  • 分享至 

  • xImage
  •  

金魚都能懂的網頁切版:10、11

方塊版

在排版時,總會想到幾種方法,有傳統的 float 排版,或是跨世代的 flex 排版,又或是簡單易懂用 bootstrap 的grid網格進行排版。
對於方塊版,以下有運用 float 排版及單純用 flex 進行排版的方法。

float方塊版

https://codepen.io/mikeyam/pen/XWKrmyz?editors=1100
對於html用wrap進行外部處理,裡面放五個 box,其中第一個box是50%的大小,其餘皆25%來做方塊排版。

.wrap{
    max-width: 1200px;
    margin: auto;
    overflow: hidden;
}
.box{
    float: left;
    position: relative;
}

裡面的box排版,使用到選取器 ~ 第一個之後都以寬度25%寫入

.box:first-child{
    width: 50%;
}
.box:first-child ~.box{
    width: 25%;
}
.box h3{
    margin-bottom: .4em;
}
.box img{
    width: 100%;
    vertical-align: middle;
}

文字部分用到之前學習技巧進行動太效果設計,有用到opacity、position、background: rgba(0, 0, 0, .6);、flex垂直水平居中、box-sizing、transform: scale(0);的放大效果

.text{
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    text-align: center;
    padding: 15px;
    color: #fff;
    background: rgba(0, 0, 0, .6);
    opacity: 0;
    transition: .9s;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    transform: scale(0);
}
.box:hover .text{
    opacity: 1;
    transform: scale(1);
}

flex方塊版

https://codepen.io/mikeyam/pen/zYBOGbB?editors=0100
html部分,先用section1和section2來把他分成兩部分,也就是box1是在section1,其他box2~5都是在section2裡,再來在section2這邊使用flex wrap把裡面都obx做兩排排列,這樣就可以做出想要的方塊版排版。

.section1{
    width: 50%;
}
.section2{
    width: 50%;
    display: flex;
    flex-wrap: wrap;
}
.box1{
    width: 100%;
}
.box2 ,.box3, .box4, .box5{
    width: 50%;
}

Icon搖擺版

https://codepen.io/mikeyam/pen/YzWKwbq?editors=1100
在個版型裡,用到許多進階的技巧,有transform: rotate 和 @keyframes 和 animation動態變化的效果。


wrap 外層設定

html,body{
    height: 100%;
    background:  #f5af;
}
.wrap{
    max-width: 1200px;
    margin: 100px auto;
    display: flex;
    padding-top: 75px;
}

用border、border-radius、box-shadow 來做出內部外框

.box{
    width: 370px;
    margin: 0 15px;
    text-align: center;
    border: 10px solid #f9cec2;
    background-color: #fff;
    border-radius: 20px;
    box-shadow: 10px 20px 50px #f7b6a7;
}
.box h3{
    color: #f5afac;
}
.box p{
    color: #ccc;
}
.text{
    padding: 20px 20px 2em;
}

用margin把icon往上推,使其破格出原本的外框大小。

.icon{
    width: 150px;
    height: 150px;
    background-color: #fff;
    margin: -75px auto 0;
    /* 破格 */
    font-size: 100px;
    line-height: 150px;
    /* 單行垂直居中 */
    border-radius: 50%;
    color: #f5afac;
    position: relative;
}

icon小外框用偽元素製作出來並且位置固定在icon上面,因為border有10px大小,所以位置要推回去,並且使用transform: rotate的旋轉效果,再搭配 @keyframes 和 animation做出動態效果,要注意地方是我們是選取.fab的class,用這個icon做動態效果。

.icon::before{
    content: '';
    position: absolute;
    width: 100%;
    height: 100%;
    left: -10px;
    top: -10px;
    border-radius: 50%;
    border-top: 10px solid #f9cec2;
    border-right: 10px solid #f9cec2;
    border-left: 10px solid transparent;
    border-bottom: 10px solid transparent;
    transform: rotate(-45deg);
}

@keyframes shake{
    0%{ transform: rotate(-20deg); }
    100%{ transform: rotate(10deg); }
}
.box:hover .fab{
    animation: shake .5s linear infinite alternate;
}

上一篇
第二十天:美式導覽列 和 麵包屑
下一篇
第二十二天:切出漂亮表格 和 萬用的側邊選單
系列文
向CSScoke重新學習CSS30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言