当前位置: 首页 > article >正文

内容占位符:Kinetic Loader HTML+CSS 使用CSS制作三角形原理

内容占位符

前言

随着我们对HTML和CSS3的学习逐渐深入,相信大家都已经掌握了网页制作的基础知识,包括如何使用HTML标记构建网页结构,以及如何运用CSS样式美化页面。为了进一步巩固和熟练这些技能,今天我们一起来完成一个有趣且实用的项目——内容占位符的设计与实现。

 效果图展示

动态效果,可点击查看

内容占位符

学习目标

本单元主要完成学习目标:

        1.使用css实现三角形效果

        2.如何给元素添加动画

结构分析

任务1:静态效果实现

知识学习

  1. ::before  ::after 介绍

::before  ::after 伪元素用来给元素前面或者后面插入指定内容

  • 使用content属性来指定要插入的内容;
  • 必须配合content属性一起使用,content的属性值可以为空;
  • 伪元素的display属性值默认为inline;
  1. 使用css制作三角形原理

我们制作三角其实是利用边框(border) 属性来进行制作,大多数时候我们都是单纯认为边框是一条实线、虚线,点这些,并且平时用的都是同一个颜色这样不好看出来,所以这里我们用四种颜色进行演示

 第一步:

background-color: coral;
width: 150px;
height: 150px;
border-left: 5px solid aqua;
border-right: 5px solid  rgb(0, 255, 21);
border-top: 5px solid rgb(255, 0, 238);
border-bottom: 5px solid  rgb(255, 0, 0);

 第二步: 

border-left: 100px solid aqua;
border-right: 100px solid  rgb(0, 255, 21);
border-top: 100px solid rgb(255, 0, 238);
border-bottom: 100px solid  rgb(255, 0, 0);

 第三步:

border-left: 150px solid aqua;
border-right: 150px solid  rgb(0, 255, 21);
 border-top: 150px solid rgb(255, 0, 238);
border-bottom: 150px solid  rgb(255, 0, 0);

第四步: 

width: 0px;
height: 0px;
border-left: 150px solid aqua;
border-right: 150px solid  rgb(0, 255, 21);
border-top: 150px solid rgb(255, 0, 238);
border-bottom: 150px solid  rgb(255, 0, 0);

我们可以看到当内部宽度变小时边框不断的向内部扩张,这里可以用极限的思维来进行理解,当宽度为0和高度也为0的情况下:width:0;height:0;也就是说盒子宽高趋近为零时就会变成这个样子。

如何实现三角形效果?

只需要在不需要的边框加一个透明颜色transparent就可以了

<style>
        .box{
            width: 0;
            height: 0;
            border-left:100px solid pink;
            border-bottom:100px solid rgb(192, 255, 193);
            border-right:100px solid transparent;
            border-top:100px solid transparent;
        }
    </style>
</head>
<body>
    <div class="box"></div>
</body>

效果图: 

任务实施

<style>
        .bigBox {
            position: relative;         //给三角形盒子进行相对定位
            left:45%;           //让元素处于页面宽度大约45%的位置
            top: 350px;
            width: 90px;
            height: 90px;
        }
        .bigBox::after,
        .bigBox::before {
       content: '';   
 /*content: '';:这是必需的,因为伪元素必须有内容才能显示。 */
          position: absolute;
          border: 50px solid transparent;
          border-bottom-color: #fff;
        } 
.bigBox::before {
          transform: rotate(90deg);    //将第一个写完的三角形旋转90度,让两个三角形拼接成一个大的直角三角形
    </style>
</head>
<body>
    <div class="bigBox"> </div>
</body>

效果展示

任务2:动态旋转效果实现

知识学习

@keyframes 的使用

  • @keyframes 规则是创建动画。@keyframes 规则内指定一个 CSS 样式和动画将逐步从目前的样式更改为新的样式。
  • 当在 @keyframes 创建动画,把它绑定到一个选择器,否则动画不会有任何效果。
  • 指定至少这两个 CSS3 的动画属性绑定向一个选择器

 animation 属性

  • 创建动画序列,需要使用 animation 属性或其子属性,该属性允许配置动画时间、时长以及其他动画细节,但该属性不能配置动画的实际表现,动画的实际表现是由 @keyframes 规则实现

任务实施

@keyframes rotateA {
          0%,25% {
            transform: rotate(0deg);
          }
          50%,75% {
            transform: rotate(180deg);
          }
          100% {
            transform: rotate(360deg);
          }
        }
        @keyframes rotateB {
          0%,25% {
            transform: rotate(90deg);
          }
          50%,75% {
            transform: rotate(270deg);
          }
          100% {
            transform: rotate(450deg);
          }
        }

全部代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>内容占位符</title>
    <style>
        body {
            background-color: rgb(4, 4, 59);
        }
        .bigBox {
            position: relative;
            left:45%;
            top: 350px;
            width: 90px;
            height: 90px;
        }
        .bigBox::after,
        .bigBox::before {
          content: '';              
          position: absolute;
          border: 50px solid transparent;
          border-bottom-color: #fff;
          animation: rotateA 2s linear infinite 0.5s;
        } 
        .bigBox::before {
          transform: rotate(90deg);
          animation: rotateB 2s linear infinite;
        } 
        @keyframes rotateA {
          0%,25% {
            transform: rotate(0deg);
          }     
          50%,75% {
            transform: rotate(180deg);
          }     
          100% {
            transform: rotate(360deg);
          }
        }
        @keyframes rotateB {
          0%,25% {
            transform: rotate(90deg);
          }      
          50%,75% {
            transform: rotate(270deg);
          }
          100% {
            transform: rotate(450deg);
          }
        }
    </style>
</head>
<body>
    <div class="bigBox"> </div>
</body>
</html>


http://www.kler.cn/a/398317.html

相关文章:

  • Ubuntu22.04LTS 部署前后端分离项目
  • 高光谱深度学习调研
  • 树莓派4B Qt+FFMPEG 多线程录制USB相机mjpeg数据流“h264_omx“硬件编码的MP4文件
  • Ubuntu 24.04 安装 JDK 21
  • 用PHP实现一个简单的http服务器
  • RHCE的学习(20)
  • SQL面试题——抖音SQL面试题 最大在线用户数
  • Android OpenGLES2.0开发(八):Camera预览
  • 鸿蒙中如何实现图片拉伸效果
  • 计算机网络 (4)计算机网络体系结构
  • 分享一个小米手环自定义表盘安装教程与下载(支持最新小米手环9pro)
  • day01(单片机高级)单片机控制ESP8266连接TCP
  • 自制C++游戏头文件:C++自己的游戏头文件!!!(后续会更新)
  • JMeter中添加请求头
  • 3. Django中的URL调度器 (re_path 和正则表达式)
  • Linux运维篇-iscsi存储搭建
  • 每日练习(字节青训)
  • Windows配置域名映射IP
  • 软考教材重点内容 信息安全工程师 第 3 章 密码学基本理论
  • 【redis】—— 初识redis(redis基本特征、应用场景、以及重大版本说明)
  • 【第二课】Rust变量与数据类型(一)
  • Android OpenGL ES详解——立方体贴图
  • 电子电气架构 -- 下一代整车电网
  • 微服务即时通讯系统的实现(客户端)----(3)
  • React学习05 - redux
  • MATLAB实现GARCH(广义自回归条件异方差)模型计算VaR(Value at Risk)