金魚都能懂的網頁切版:10、11
在排版時,總會想到幾種方法,有傳統的 float 排版,或是跨世代的 flex 排版,又或是簡單易懂用 bootstrap 的grid網格進行排版。
對於方塊版,以下有運用 float 排版及單純用 flex 進行排版的方法。
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);
}
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%;
}
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;
}