day43-Feedback Ui Design(反馈ui设计)

news2024/11/18 15:42:39

50 天学习 50 个项目 - HTMLCSS and JavaScript

day43-Feedback Ui Design(反馈ui设计)

效果

在这里插入图片描述

在这里插入图片描述

index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Let Us Know Your Feedback</title>
    <!-- 图标库 -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css"
        integrity="sha512-1PKOgIY59xJ8Co8+NE6FZ+LOAZKjy+KY8iq0G4B3CyeY6wYHN3yt9PW0XpSriVlkMXe40PTKnXrLnZ9+fkDaog=="
        crossorigin="anonymous" />
    <link rel="stylesheet" href="style.css" />
</head>

<body>
    <!-- 面板容器 -->
    <div id="panel" class="panel-container">
        <strong>你对我们的服务表现满意吗?</strong>
        <!-- 评级容器 -->
        <div class="ratings-container">
            <!-- 评级 -->
            <div class="rating">不好</div>

            <div class="rating">一般</div>

            <div class="rating active">满意</div>
        </div>
        <button class="button" id="send">发送</button>
    </div>
    <script src="script.js"></script>
</body>

</html>

style.css

/* 引入字体 */
@import url('https://fonts.googleapis.com/css?family=Montserrat&display=swap');

* {
    box-sizing: border-box;
}

body {
    background: url('https://source.unsplash.com/random') no-repeat center/cover;
    font-family: 'Montserrat', sans-serif;
    /* 子元素面板居中 */
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100vh;
    overflow: hidden;
    margin: 0;
}

/* 面板容器 */
.panel-container {
    background-color: #fff;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
    border-radius: 4px;
    /* 字体大小设置为父元素字体大小的百分比。 */
    font-size: 90%;
    /* 竖直居中 */
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    padding: 30px;
    max-width: 400px;
    transition: transform 0.5s linear;
}

/* 类似翻卡片的效果 */
.changeCard{
    transform: rotateY(360deg);
}
/* 标题 */
.panel-container strong {
    line-height: 20px;
}

/* 评级容器 */
.ratings-container {
    display: flex;
    margin: 20px 0;
}

/* 评级 */
.rating {
    flex: 1;
    cursor: pointer;
    padding: 20px;
    margin: 10px 5px;
    background: linear-gradient(145deg, #cacaca, #f0f0f0);
}

/* 选中该项时 */
.rating:hover,
.rating.active {
    border-radius: 4px;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.98);
}


/* 发送按钮 */
.button {
    cursor: pointer;
    position: relative;
    padding: 10px 24px;
    font-size: 18px;
    color: rgb(98, 177, 193);
    border: 2px solid rgb(98, 136, 193);
    border-radius: 34px;
    background-color: transparent;
    font-weight: 600;
    /* 定义了一个自定义的贝塞尔曲线,使得动画起初缓慢,然后加速,在接近结束时再次缓慢,从而创建一个平滑的过渡效果。 */
    transition: all 0.3s cubic-bezier(0.23, 1, 0.320, 1);
    overflow: hidden;
}

/* 按钮悬浮时,背景的变化 */
.button::before {
    content: '';
    position: absolute;
    /* inset 属性是一个简写属性,设置了伪元素的 top、right、bottom 和 left 的值都为 0,即将伪元素放置在其容器元素的四个边界上。 */
    inset: 0;
    /* 居中 */
    margin: auto;
    /* 以上两个css属性使其从按钮中心放大 */
    width: 50px;
    height: 50px;
    /* 继承了按钮元素的 border-radius 属性 */
    border-radius: inherit;
    scale: 0;
    z-index: -1;
    background-color: rgb(114, 135, 238);
    transition: all 0.6s cubic-bezier(0.23, 1, 0.320, 1);
}

.button:hover::before {
    scale: 3;
}

.button:hover {
    color: #212121;
    scale: 1.1;
    box-shadow: 0 0px 20px rgba(193, 163, 98, 0.4);
}

.button:active {
    scale: 1;
}

/* 用于js中反馈后的显示文本的小红心 */
.fa-heart {
    color: red;
    font-size: 30px;
    margin-bottom: 10px;
}

script.js

// 重点 flex  事件委派 注意:html中必须有一个.rating添加active类,否则报错
// 1.获取元素节点
const ratings = document.querySelectorAll('.rating')//所有的评级选项
const ratingsContainer = document.querySelector('.ratings-container')//评级容器
const sendBtn = document.querySelector('#send')//发送按钮
const panel = document.querySelector('#panel')//展示面板
let selectedRating = '满意'
// 此处使用事件委派
ratingsContainer.addEventListener('click', (e) => {
    // console.log(e.target);//<div class="rating"> 一般 </div >
    // 移除原有的active
    document.querySelector('.rating.active').classList.remove('active')
    // 对当前点击的选项加active
    e.target.classList.add('active')
    selectedRating = e.target.innerText
    // console.log(selectedRating);
})
// 点击,发送显示结果
sendBtn.addEventListener('click', () => {
    panel.innerHTML = `
        <i class="fas fa-heart"></i>
        <strong>感谢!</strong>
        <br>
        <strong>您的反馈为: ${selectedRating}</strong>
        <p>我们将利用您的反馈来改进我们的服务</p>
    `
    panel.classList.add('changeCard')
})


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/799811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库分库分表备份

#!/bin/sh #调用系统函数库 . /etc/init.d/functions #Define variables BACKUPDIR/backup/sort/ MYSQLUSERroot MYSQLPASSWDRedHat123 MYSQLCMD"mysql -u$MYSQLUSER -p$MYSQLPASSWD" MYSQLDUMP"mysqldump -u$MYSQLUSER -p$MYSQLPASSWD -x -F -R" DATABASE…

ORB-SLAM3 单目运行EuRoC数据集

使用ORB-SLAM3运行EuRoC数据集&#xff0c;EuRoC数据集是无人家拍摄的&#xff0c;比较精确。 数据集测试 1&#xff09;从官网下载Euroc数据集&#xff0c;ASL格式&#xff0c;http://projects.asl.ethz.ch/datasets/doku.php?idkmavvisualinertialdatasets &#xff08;2…

xrdp登录显示白屏且红色叉

如上图所示&#xff0c;xrdp登录出现了红色叉加白屏&#xff0c;这是因为不正常关闭导致&#xff0c;解决方法其实挺简单的 #进入/usr/tmp cd /usr/tmp #删除对应用户的kdecache-** 文件&#xff08;我这里使用的是kde桌面&#xff09;&#xff0c;例如删除ywj用户对应的文件 …

32.选择器

选择器 html部分 <div class"toggle-container"><input type"checkbox" id"good" class"toggle"><label for"good" class"label"><div class"ball"></div></label&…

126.【Redis - 快速开发使用版】

Redis 二刷 (一)、认识NoSQL 与 SQL1.NoSQL与SQL的区别 (二)、认识Redis1.Redis 特征2.Redis安装及启动的三种方式 (基于Window)(1).命令行配置文件 3.Redis 客户端(1).命令行客户端(2).Redis可视化客户端 4.Redis 数据结构(1).Redis 通用命令(2).String 类型(3).Redis 的Key层…

回答网友 网友嫌弃俺用SUM,不用Count

网友嫌弃俺用SUM&#xff0c;不用Count 。俺就举了这个例子。sum有时很方便&#xff0c;可以一个select 完成多个数据的统计。 declare t table(usercode varchar(20),sex varchar(1) ,age int ,intern int ,city varchar(20) ) insert t(usercode,sex,age,intern,city) value…

状态机实现N位按键消抖

状态机实现N位按键消抖 1、原理 利用状态机实现按键的消抖&#xff0c;具体的原理可参考 (50条消息) 基于FPGA的按键消抖_fpga 按键消抖_辣子鸡味的橘子的博客-CSDN博客 状态机简介&#xff1a; 状态机分类可以主要分为两类&#xff1a;moore和mealy 根据三段式状态机最后…

《MySQL45讲》笔记—一条SQL查询语句是如何执行的、一条SQL更新语句是如何执行的

整体架构 server层包括连接器、查询缓存、分析器、优化器、执行器&#xff1b;存储引擎层负责数据的存储和提取&#xff0c;支持InnoDB、MyISAM、Memory等多个存储引擎。现在最常用的存储引擎是InnoDB&#xff0c;它从MySQL 5.5.5版本开始成为了默认存储引擎&#xff0c;如果在…

python-16-线程池和进程池python并发编程

Python ThreadPoolExecutor线程池 线程池的基本原理是什么&#xff1f; 利用Python快速实现一个线程池&#xff0c;非常简单 Python并发编程专题 1 并发编程 1.1 并发编程概念 一、为什么要引入并发编程&#xff1f; 场景1&#xff1a;一个网络爬虫&#xff0c;按顺序爬取花…

在Windows server 2012上使用virtualBox运行CentOS7虚拟机,被强制休眠(二)

问题场景 本月7月10日处理了一个虚拟机被强制暂停的问题&#xff0c;详见&#xff1a;在Windows server 2012上使用virtualBox运行CentOS7虚拟机&#xff0c;被强制暂停当时是由于C盘存储空间不足&#xff0c;导致虚拟机被强制暂停&#xff0c;将虚拟机迁移后&#xff0c;问题…

哈工大计算机网络课程局域网详解之:交换机概念

哈工大计算机网络课程局域网详解之&#xff1a;交换机概念 文章目录 哈工大计算机网络课程局域网详解之&#xff1a;交换机概念以太网交换机&#xff08;switch&#xff09;交换机&#xff1a;多端口间同时传输交换机转发表&#xff1a;交换表交换机&#xff1a;自学习交换机互…

Spire.Office for.NET Crack

Spire.Office for.NET Crack Spire.Office for.NET是E-iceblue提供的企业级Office.NET API的组合。它包括Spire.Doc、Spire.XLS、Spire.Seadsheet、Spire.Presentation、Spire_PDF、Spire.DataExport、SpireOfficeViewer、Spire-PDFViewer、Spire.DocViewer、Spire.Barcode和Sp…

模板(简单介绍C++)

模板 引入模板函数模板概念语法函数模板的原理函数模板实列化隐式实例化显示实例化 模板参数匹配原则 类模板类模板的定义格式类模板的实列化 泛型编程补充知识 引入模板 当我们想实现一个通用的交换函数时&#xff0c;我们能否告诉编译器一个模子&#xff0c;让编译器根据不同…

基于Java+SpringBoot+vue前后端分离墙绘产品展示交易平台设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Ansible 自动化运维

目录 ansible 环境安装部署ansible 命令行模块inventory 主机清单 Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可…

MySQL 之 Buffer Pool

一、innoDB设计缓冲池目的 避免频繁访问磁盘&#xff0c;提高数据库读写性能。&#xff08;作用与引用Cache三级缓存类似。&#xff09; 二、缓冲池工作模式 读取数据&#xff1a;当Buffer Pool存在目标数据&#xff0c;就直接返回给客户端&#xff0c;没有再磁盘取数据。 修改…

1-高性能计算研究

高性能计算研究 E级计算机系统研制高性能计算应用软件研发并行编程框架应用协同开发优化平台和工具软件示例 高性能计算环境研发 E级计算机系统研制 高性能互联计算、编程、运行模型 应用驱动的新型可扩展基础算法&#xff08;适用于E级计算的可计算物理建模与新型计算方法&a…

softmax回归

模型 softmax回归是多类分类模型&#xff0c;用于获取每个分类的置信度&#xff0c;置信度计算方式如下 经过全连接层&#xff0c;得到输出O&#xff0c;将O作为softmax的输入 O是输出向量&#xff0c;每个分量表示一个类别&#xff0c;y_hat_i表示i类别的置信度&#xff0…

[语义分割] DeepLab v1网络(语义分割、信号下采样、空间上的不敏感性、LargeFOV、膨胀卷积、空洞卷积、MSc、Multi-Scale)

Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs 论文地址&#xff1a;Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs参考源码&#xff1a;https://github.com/TheLegendAli/DeepLab-Context DeepL…

数据库中的Hash索引以及哈希碰撞

hash索引&#xff0c;就是用过一定的hash算法&#xff0c;将键值换算成新的hash值&#xff0c;映射到对应的槽位上&#xff0c;然后存储在hash表中 就比如下面的name字段&#xff0c;经过算法的分析&#xff0c;就会对应出一张hash表 如果我的两个name字段计算出来的key相同&a…