• Day4:写前端项目(html+css+js)


    xiao效果:

     页面布局

    使用grid

    1. <div class="grid-container">
    2. <div>
    3. <h1 class="uppercase ff-sans-cond letter-spacing-2 text-accent"> so, you want to travel to
    4. <span class="uppercase letter-spacing-2 fs-900 text-white ff-sans-normal">Spacespan>h1>
    5. <p class="text-accent">Let’s face it; if you want to go to space, you might as well genuinely go to
    6. outer space and not hover kind of on the edge of it. Well sit back, and relax
    7. because we’ll give you a truly out of this world experience!p>
    8. div>
    9. <div>
    10. <a href="#" class="large-button uppercase ff-serif fs-600 text-dark bg-white">Explorea>
    11. div>
    12. div>

    效果如下所示: 

     

    1. .grid-container{
    2. display: grid;
    3. grid-template-columns: 2em repeat(2, minmax(0, 40rem)) 2em;
    4. }
    5. .grid-container > *:first-child {
    6. grid-column: 2;
    7. outline: 1px solid red;
    8. }
    9. .grid-container > *:last-child {
    10. grid-column: 3;
    11. outline: 1px solid yellow;
    12. }

    设置网格布局来布局整个结构,将网格分为4个,第一个孩子占第二个,最后一个孩子占第三个

    1. .grid-container {
    2. display: grid;
    3. column-gap: var(--container-gap, 2rem);
    4. grid-template-columns: minmax(2rem, 1fr) repeat(2, minmax(0, 40rem)) 2rem;
    5. }

    给每个列之间制造gap

    grid-template-columns: minmax(2rem, 1fr) repeat(2, minmax(0, 40rem)) minmax(2rem, 1fr);

    fr是什么?

    在 CSS Grid 网格布局中,引入了一种新的长度单位 fr(fraction)。它表示 Grid 布局中中剩余空间(leftover space)的一部分(fraction)。
    一般来说 1fr 的意思是“100%的剩余空间”, .25fr 意味着“25%的剩余空间”。当时当 fr 大于 1 的时候,则会重新计算比例来分配。我们可以看下面的详细例子。

    前端 - 介绍CSS中的长度单位fr_个人文章 - SegmentFault 思否

    使用flex进行布局

    1. <div class="container flex even-columns" style="max-width: 60rem">
    2. <div>
    3. <h1 class="text-accent fs-500 ff-sans-cond uppercase letter-spacing-1">So, you want to travel to
    4. <span class="d-block fs-900 ff-serif text-white">Spacespan>h1>
    5. <p>Let’s face it; if you want to go to space, you might as well genuinely go to
    6. outer space and not hover kind of on the edge of it. Well sit back, and relax
    7. because we’ll give you a truly out of this world experience! p>
    8. div>
    9. <div style="display:flex; justify-content: flex-end; align-items: flex-start;">
    10. <a href="#" class="large-button uppercase ff-serif fs-600 text-dark bg-white">Explorea>
    11. div>
    12. div>
    1. .flex {
    2. display: flex;
    3. gap: var(--gap, 1rem);
    4. }
    5. .flex.even-columns > * {
    6. width: 100%;
    7. outline: 1px solid limegreen;
    8. }
    justify-content: flex-end; align-items: flex-start;

    是啥?

    响应式设计

    1. .grid-container{
    2. outline: 5px solid limegreen;
    3. display: grid;
    4. }
    5. @media (min-width: 45rem) {
    6. .grid-container{
    7. column-gap: var(--container-gap, 2rem);
    8. grid-template-columns: minmax(2rem, 1fr) repeat(2, minmax(0, 30rem)) minmax(2rem, 1fr);
    9. }
    10. .grid-container > *:first-child {
    11. grid-column: 2;
    12. outline: 1px solid red;
    13. }
    14. .grid-container > *:last-child {
    15. grid-column: 3;
    16. outline: 1px solid yellow;
    17. }
    18. }

     当屏幕大于等于45rem的时候,它会有columns的布局,会布局成四个columns

     

    1. :root {
    2. /* colors */
    3. --clr-dark: 230 35% 7%;
    4. --clr-light: 231 77% 90%;
    5. --clr-white: 0 0% 100%;
    6. /* font-sizes */
    7. --fs-900: clamp(5rem, 8vw + 1rem, 9.375rem);
    8. --fs-800: 3.5rem;
    9. --fs-700: 1.5rem;
    10. --fs-600: 1rem;
    11. --fs-500: 1.75rem;
    12. --fs-400: 0.9375rem;
    13. --fs-300: 1rem;
    14. --fs-200: 0.875rem;
    15. /* font-families */
    16. --ff-serif: "Bellefair", serif;
    17. --ff-sans-cond: "Barlow Condensed", sans-serif;
    18. --ff-sans-normal: "Barlow", sans-serif;
    19. }
    20. @media (min-width: 35em) {
    21. :root {
    22. --fs-800: 5rem;
    23. --fs-700: 2.5rem;
    24. --fs-600: 1.5rem;
    25. --fs-400: 1rem;
    26. }
    27. }
    28. @media (min-width: 45em) {
    29. :root {
    30. /* font-sizes */
    31. --fs-800: 6.25rem;
    32. --fs-700: 3.5rem;
    33. --fs-600: 2rem;
    34. --fs-400: 1.125rem;
    35. }
    36. }

    因为整个页面会随着大小变化,字体也会进行变化。并且后面会大到overflow,所以需要调整字体大小

    clamp():

    CSS函数将中间值限制在定义的最小界限和最大界限之间的值范围内。该函数采用三个参数:最小值、首选值和最大允许值。

    字体大小区别:(推荐使用rem,因为root改变,整个字体都可以改变)

    px、em、rem区别介绍 | 菜鸟教程

    解决这个问题:space 与前面的为一行

     

     解决方法:将它变为块元素

    1. .d-block{
    2. display: block;
    3. }

    如何达成这种效果?

     首先text居中

    将容器居中:place-content: center;

    给他加个padding

    1. .grid-container {
    2. border: 5px solid limegreen;
    3. display: grid;
    4. text-align: center;
    5. place-content: center;
    6. padding-inline: 1rem;
    7. }
    8. .grid-container * {
    9. max-width: 50ch;
    10. }
    11. @media (min-width: 45em) {
    12. .grid-container {
    13. column-gap: var(--container-gap, 2rem);
    14. grid-template-columns: minmax(2rem, 1fr) repeat(2, minmax(0, 30rem)) minmax(2rem, 1fr);
    15. }
    16. .grid-container > *:first-child {
    17. grid-column: 2;
    18. outline: 1px solid red;
    19. }
    20. .grid-container > *:last-child {
    21. grid-column: 3;
    22. outline: 1px solid yellow;
    23. }
    24. }

     

     将整个页面的容器放在页面的底端

    1. .grid-container--home {
    2. padding-bottom: max(6rem, 20vh);
    3. align-items: end;
    4. }

    添加背景图片:随着屏幕大小而变化

    效果:

     

    1. body {
    2. #不让页面背景图片重复
    3. background-size: cover;
    4. background-position: bottom center;
    5. }
    6. /* home */
    7. .home {
    8. background-image: url("../assets/home/background-home-mobile.jpg");
    9. }
    10. @media (min-width: 35rem) {
    11. .home {
    12. #固定页面具体位置
    13. background-position: center center;
    14. background-image: url("../assets/home/background-home-tablet.jpg");
    15. }
    16. }
    17. @media (min-width: 45rem) {
    18. .home {
    19. background-image: url("../assets/home/background-home-desktop.jpg");
    20. }
    21. }

  • 相关阅读:
    ES6、ES7、ES8、ES9、ES10、ES11
    虚函数表存储的位置(解析C++内存分配及其编译分段)
    ubuntu 安装卸载 deb软件
    剑指 Offer 66. 构建乘积数组
    【大数据工具】Kafka伪分布式、分布式安装和Kafka-manager工具安装与使用
    开放式RAN芯片的内联加速与旁路加速
    Redis(03)| 数据结构-链表
    eclipse启动时间过长的问题
    【数据库】数据库的一级二级三级封锁协议
    基于Java的大学生兼职论坛管理系统设计与实现(源码+lw+部署文档+讲解等)
  • 原文地址:https://blog.csdn.net/weixin_42173016/article/details/127975377