• 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. }

  • 相关阅读:
    golang中使用泛型
    快速上手 vercel,手把手教你白嫖部署上线你的个人项目
    python基于django的网上商品拍卖系统 毕业设计
    9.28栈、队列&状态压缩&双向搜索
    2024骨传导耳机哪款值得买?健身人士说这五款骨传导耳机好~
    arcgis实现矢量数据的局部裁剪
    【云原生】k8s 管理平台 rancher
    CocosCreator:背景滚动 、背景循环滚动
    SpringBoot的作用
    三维数字沙盘大数据人工智能模拟对抗推演系统开发教程第一课
  • 原文地址:https://blog.csdn.net/weixin_42173016/article/details/127975377