第9章 CSS-DOM

news2024/12/26 11:48:51

三位一体的网页

游览器由结构层,表现层,行为层组成

结构层

  • 网页的结构层(structural layer)由HTML或XHTML之类的标记语言负责创建。

表现层

  • 表示层(presentation layer)由CSS负责完成。CSS描述页面内容应该如何呈现。

行为层

  • 行为层(behavior layer)负责内容应该如何响应事件这一问题。这是JavaScript语言和DOM主宰的领域。

分离

  • 在所有的设计工作中要保障,HTML去搭建文档的结构;使用CSS去设置文档的呈现效果;使用DOM脚本去实现文档的行为。
  • 单这三项技术由互相影响。例如在js中去创建和销毁html,css中去通过伪类实现js的效果,js也同样可以改变css

style属性

  • 文档里的每个元素都是一个对象,每个元素都有一个style属性(存放这dom元素的所有样式属性)
const box=document.getElementById("box");
console.log(typeof box.style);		// object
console.log(box.style);				// 返回一个CSSStyleDeclaration对象里面包含了元素所有样式

获取样式

  • 获取元素如果是多个单词组合而成用小驼峰命名获取
  • 注意style属性只能获取和设置到内联style上
console.log(box.style.backgroundColor);
console.log(box.style.color);

设置样式

  • style对象的各个属性就都是可读写的
  • style对象的属性的值必须放在引号里,单引号或双引号均可:
  • style属性设置的样式将会直接作用到元素的内联style上
box.style.color="red"
box.style.font = "bold 30px italic"

何时该用DOM脚本设置样式

  • 你不应该利用DOM去创建重要的内容那样,你也不应该利用DOM为文档设置重要的样式。

根据元素在节点树里的位置来设置样式

  • css可以通过各种选择器为元素添加样式但是CSS还无法根据元素之间的相对位置关系找出某个特定的元素,但这对DOM来说却不是什么难题
function set_style(){
    let box=document.getElementsByTagName("h1");

    box=Array.from(box);
    box.forEach((item)=>{
        item.nextElementSibling.style.color="red"
    })
}

在这里插入图片描述

根据某种条件反复设置某种样式

  • 如果游览器支持css3可以直接使用选择器为奇数行和偶数行设置样式,如果游览器不支持js就是不错的选择
function set_style(){
    let li=document.getElementsByTagName("li");
    li=Array.from(li);

    li.forEach((item,index)=>{
        if(index%2==0){
            item.style.backgroundColor='red'
        }else{
            item.style.backgroundColor='blue'
        }
    })
}

在这里插入图片描述

根据特定的事件设置样式

  • 在有些事件处理上,css就表现的无能无力这时js便可以提供很好的解决方法例如点击事件
// htm部分
<button id="btn" onclick="set_style()">点我变色</button>
<h3 id="text">哈哈</h3>
// js部分
let color=false
function set_style(){
   const text=document.getElementById("text");

   color=!color
   
   if(color){
       text.style.color='red'
   }else{
       text.style.color=''
   }
   
}

在这里插入图片描述

最后

在纠结是使用css添加某些样式时和用js添加时一定要考虑下面俩个因素

  1. 这个问题最简单的解决方案是什么;
  2. 哪种解决方案会得到更多浏览器的支持。

className属性

  • style代码是用js去添加和修改style,className是使用js去更新这个元素的class属性。
  • className是一个可读写的属性(注意className设置的class是替换不是追加)
  • className这确保了网页的表示层和行为层分离得更加彻底。

利用className实现斑马线

function set_style() {
    let li = document.getElementsByTagName("li");
    li = Array.from(li);

    li.forEach((item, index) => {
        item.className='f30'
        if (index % 2 == 0) {
        	// 注意这里要加空格,是为了追加class
            item.className+=' red'
        } else {
            item.className='blue'
        }
    })
}

在这里插入图片描述

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

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

相关文章

腾讯云COS+PicGO+截图工具+Obsidian+Typora+蚁小二:打造丝滑稳定的Markdown写作和分发环境

背景 很久很久以前&#xff0c;我写过一篇《有道云笔记EverythingTyporaGitHub图床PicGojsDelivr加速截图工具——创造丝滑免费的Markdown写作环境》&#xff08;https://blog.csdn.net/qq_43721542/article/details/9685957&#xff09;&#xff0c;当时的目的是打造一个云同…

中国艺术孙溟㠭篆刻作品《活着》

人人为生活挣扎着&#xff0c;做着不想做的事&#xff0c;说着不想说的话&#xff0c;为生活低头弯腰委屈求全人生苦多甜少&#xff0c;何时了&#xff01;何时了&#xff01;甜来人生到头了…… 孙溟㠭篆刻作品《活着》 孙溟㠭篆刻作品《活着》 孙溟㠭篆刻作品《活着》 文/九钵

美团基础架构面经总结汇总

美团基础架构的面经。 问的全是基础,一个编程语言的问都没有。 问题记录 MySQL-MVCC InooDB是通过 MVCC 实现可重复读的隔离级别的,MVCC 就是多版本并发控制,它其实记录了历史版本的数据,解决了读写并发冲突问题。有一个版本编码,然后它进入了各种操作下的数据状态,能…

2023华数杯数学建模A题思路 - 隔热材料的结构优化控制研究

# 1 赛题 A 题 隔热材料的结构优化控制研究 新型隔热材料 A 具有优良的隔热特性&#xff0c;在航天、军工、石化、建筑、交通等 高科技领域中有着广泛的应用。 目前&#xff0c;由单根隔热材料 A 纤维编织成的织物&#xff0c;其热导率可以直接测出&#xff1b;但是 单根隔热…

JDK19 - 虚拟线程详解

JDK19 - 虚拟线程详解 前言一. Continuation 和 虚拟线程1.1 Continuation 案例1.2 Continuation 内的重要成员1.3 run() 执行/恢复执行1.4 yield() 暂停执行1.5 测试和小总结 二. VirtualThread 解读2.1 VirtualThread 内的重要成员和构造2.2 VirtualThread 的首次执行2.3 结束…

Kubernetes高可用集群二进制部署(二)ETCD集群部署

Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署&#xff08;一&#xff09;主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署&#xff08;二&#xff09;ETCD集群部署 Kubernetes高可用集群二进制部署&#xff08;三&#xff09;部署…

problem(2):快速访问Github

访问GitHub慢&#xff0c;这是所有程序员都遇到的问题&#xff0c;今天给大家推荐一款软件&#xff0c;让我们浏览GitHub和浏览gitee一样快&#xff0c;这个开源软件就是FastGithub。 github加速神器&#xff0c;解决github打不开、用户头像无法加载、releases无法上传下载、g…

【MATLAB第64期】基于MATLAB的无目标函数SOBOL等全局敏感性分析法模型合集(SOBOL,PAWN,GSA,GSUA,GSAT等) 【更新中】

【MATLAB第64期】基于MATLAB的无目标函数SOBOL等全局敏感性分析法模型合集(SOBOL,PAWN,GSA,GSUA,GSAT等) 【更新中】 引言 在前面几期&#xff0c;介绍了局部敏感性分析法&#xff0c;本期来介绍全局敏感性分析模型&#xff0c;因还在摸索中&#xff0c;所以更新较慢&#xf…

复现原型链污染

目录 原型链污染是什么 例1 复现 例2 复现 原型链污染是什么 第一章中说到&#xff0c;foo.__proto__指向的是Foo类的prototype。那么&#xff0c;如果我们修改了foo.__proto__中的值&#xff0c;是不是就可以修改Foo类呢&#xff1f; 做个简单的实验&#xff1a; // foo是一个…

【Linux】揭秘:提升dd命令效率的秘密武器!

红帽RHCE试听课程&#xff1a;如何快速实现对服务器密码爆破&#xff1f;https://mp.weixin.qq.com/s/JUpf8G86jvnNwvKLUfWcLQ 红帽RHCE试听课程&#xff1a;linux系统下&#xff0c;用这个命令可以提高60%的工作效率https://mp.weixin.qq.com/s/pZVjMI1PLJzrA8hoPzkgMA 大家好…

LNMP及论坛搭建(第一个访问,单节点)

LNMP&#xff1a;目前成熟的一个企业网站的应用模式之一&#xff0c;指的是一套协同工作的系统和相关软件 能够提供静态页面服务&#xff0c;也可以提供动态web服务&#xff0c;LNMP是缩写 L&#xff1a;指的是Linux操作系统。 N&#xff1a;指的是nginx&#xff0c;nginx提…

MS17-010永恒之蓝漏洞复现

一&#xff0c;认识永恒之蓝 1&#xff0c;简介 永恒之蓝&#xff0c;代号MS17-010。爆发于2017年&#xff0c;其通过控制用户主机&#xff0c;利用SMB协议的漏洞来获取系统的最高权限&#xff0c;进而可以窃取信息&#xff0c;偷窥隐私&#xff0c;甚至使系统瘫痪。曾爆发覆盖…

性能测试遇到问题怎么办?学会分析流程就不怕!

一、内存溢出 1、堆内存溢出 现象&#xff1a; &#xff08;1&#xff09;压测执行一段时间后&#xff0c;系统处理能力下降。这时用JConsole、JVisualVM等工具连上服务器查看GC情况&#xff0c;每次GC回收都不彻底并且可用堆内存越来越少。 &#xff08;2&#xff09;压测持续…

数据库数据恢复-Oracle数据库文件出现坏块的数据恢复案例

Oracle数据库故障&初检&分析&#xff1a; 打开Oracle数据库时报错&#xff0c;报错信息&#xff1a;“system01.dbf需要更多的恢复来保持一致性&#xff0c;数据库无法打开”。用户急需恢复zxfg用户下的数据。 出现上述报错的可能原因包括&#xff1a;控制文件损坏、数…

【零基础学Rust | 基础系列 | 数据结构】元组,数组,向量,字符串,结构体

文章标题 简介&#xff1a;一&#xff0c;元组&#xff1a;1&#xff0c;定义元组&#xff1a;2&#xff0c;访问元组元素&#xff1a;3&#xff0c;元组解构&#xff1a;4&#xff0c;元组在函数中的应用&#xff1a; 二&#xff0c;数组&#xff1a;1&#xff0c;数组的声明和…

核心交换机新增了一个网段,现在下面PC可以获取地址访问内网 ,访问外网说DNS有问题不通

环境: SANGFOR AF 8.0.75 SANGFOR AC 13.0.47 H3C S6520-26Q-SI 问题描述: 1.在核心交换机上新规划了一个网段192.168.200.0/24,现在下面PC可以正常获取IP地址和DNS,正常访问内网服务和其它地址段IP ,访问外网说DNS有问题不通打不开网页 2.DNS解析失败,ping dns服务…

C++初阶 - 7.STL简介

目录 1.什么是STL 2.STL的版本 3.STL的六大组件 4.STL的重要性 5.如何学习STL 6.STL的缺陷 1.什么是STL STL(standard template libiary-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且是一个包罗数据结构与算法…

Django实现音乐网站 ⑷

使用Python Django框架制作一个音乐网站&#xff0c;在系列文章3的基础上继续开发&#xff0c; 本篇主要是后台歌曲类型表、歌单表模块功能开发。 目录 表结构设计 歌曲类型表结构 歌单表结构 创建表模型 创建表 后台注册表模型 引入表模型 后台自定义 总结 表结构设计…

在线考试系统ssm学生线上答疑问答试卷管理java jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 在线考试系统ssm 系统有1权限&#xff1a;管理员 二…

Docker Compose构建lnmp

目录 Compose的优点 编排和部署 Compose原理 Compose应用案例 安装docker-ce 阿里云镜像加速器 安装docker-compose docker-compose用法 Yaml简介 验证LNMP环境 Compose的优点 先来了解一下我们平时是怎么样使用docker的&#xff1f;把它进行拆分一下&#xff1a; 1…