聊聊CSS中继承的写法

css是一种用于设计网页样式的语言,作为前端开发中最基础和重要的技术之一,熟练掌握其语法和特性对于开发高质量网页至关重要。在css中,继承是一种非常有用的机制,它可以使设计网页样式更加简洁和高效。在本文中,我们将介绍css中继承的写法以及如何运用它来提高css代码的可维护性。

什么是继承?

首先,让我们来了解一下CSS中的继承是什么。CSS中的属性可以被继承,这意味着当一个元素的某个属性被设置时,它的子元素将自动继承它的值。例如,如果你在父元素上设置了字体颜色,它的子元素将自动继承它的颜色。

继承可以极大地简化CSS代码,因为它可以减少重复的代码量。通过使用继承,你可以将样式应用于页面上的多个元素,而不必在每个元素中都手动定义该样式。这使得CSS代码更加简洁,易于管理和维护。

如何使用继承?

在CSS中,使用继承非常简单。你只需要在父元素中定义一个属性,子元素将自动继承该属性。以下是一个简单的示例:

.parent {
  color: red;
}
.child {
  font-size: 16px;
}

在这个例子中,.child元素继承了.parent的颜色属性,因此它的字体颜色将是红色。另外,.child元素定义了自己的字体大小,因此它将保留该属性。

在某些情况下,你可能想要阻止继承发生。你可以使用inherit关键字来覆盖继承的属性。例如:

.parent {
  color: red;
}
.child {
  font-size: inherit;
}

在这个例子中,.child元素继承了.parent的颜色属性,但它的字体大小被设置为inherit,因此它将继承其父元素的字体大小。

另一种阻止继承的方法是使用initial关键字。该关键字将属性设置为其默认值。例如:

.parent {
  color: red;
}
.child {
  color: initial;
}

在这个例子中,.child元素将不再继承.parent的颜色属性,而是被设置为该属性的默认值。默认情况下,文本元素的颜色是黑色。

继承的优缺点

尽管继承带来了很多优势,但它也有一定的局限性和缺点。以下是一些注意事项:

继承仅限于某些属性。不能将所有属性设置为可继承,例如渐变,背景图像,边框等。继承可能导致复杂的层叠规则。如果存在多重继承,则需要考虑哪个属性将具有优先级,这可能导致代码难以调试和维护。在一些特殊情况下,继承可能会导致不必要的重绘或重排,这会影响性能。

结论

CSS中继承是一种极其有用和强大的技术,可以减少重复的代码,提高层叠效果的优先级和代码的可读性。尽管它存在一些限制和缺点,但你仍然应该学习并掌握继承的写法,以便在编写高质量、易于维护的代码时发挥它的作用。

前端入门到VUE实战笔记:立即学习

>在学习笔记中,你将探索 前端 的入门与实战技巧!

Java字节流、字符流和对象流的读写文件操作

首先,在src文件夹下新建一个images文件夹

在src文件夹下放入一张 名为Maize.jpg的图片

执行代码,可见images文件夹下已出现复制过来的Maize.jpg

同时我们也看到生成了tickler.txt备忘录文件,

所以显示记事本文件已读取,内容为: 记得每天吃早餐!

接着我们输入5个学生的名字:

可见学生信息列表已读出相应名字,随机点名器也随机点名出一位同学的名字

而且还单独添加了一位同学的信息:lxh

接下来分别添加hrh、lgh、mzj的信息

最后学生信息列表读出最终的所有名字

代码

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class TestIO{
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //上传图片到当前项目中(使用字节缓冲输入输出流)
        //创建文件输入流对象
        FileInputStream fis = new FileInputStream("src\\Maize.jpg");
        //创建文件输出流对象
        FileOutputStream fos = new FileOutputStream("src\\images\\Maize.jpg");
        //将创建的节点流的对象作为形参传递给缓冲流的构造方法
        BufferedInputStream bis=new BufferedInputStream(fis);
        BufferedOutputStream bos=new BufferedOutputStream(fos);
        int len;                      //定义len,记录每次读取的字节
        //复制文件前的系统时间
        long begin = System.currentTimeMillis();
        //读取文件并判断是否到达文件末尾
        while ((len= fis.read())!=-1){
            bos.write(len);    //从第1个字节开始,向文件写入len个字节
        }
        //复制文件后的系统时间
        long end = System.currentTimeMillis();
        System.out.println("          复制文件耗时:    "+(end-begin)+"毫秒");
        bos.close();
        bis.close();
        //上传一个记事本文件到当前项目中(使用字符文件输入输出流)。
        File file = new File("tickler.txt");
        FileWriter fw=new FileWriter(file);
        fw.write("记得每天吃早餐!");
        fw.close();
        File file1=new File("tickler.txt");
        FileReader fr=new FileReader(file1);
        int len1;  //定义len,记录读取的字符
        //判断是否读取到文件的末尾
        System.out.print("记事本文件已读取,内容为:    ");
        while((len1= fr.read())!=-1){
            //输出文件内容
            System.out.print((char)len1);
        }
        fr.close();
        //添加5个学生的姓名到name.txt文件中(使用集合的方式用字符缓冲输入输出流)
        FileWriter fw1=new FileWriter("src/name.txt");
        BufferedWriter bw=new BufferedWriter(fw1);
        System.out.println("\n请输入5个学生的名字:");
        Scanner scanner1=new Scanner(System.in);
        List nameList=new ArrayList();
        //每次读取一行文本,判断是否到文件末尾
        for(int i=1;i<=5;i++){
            String name=scanner1.nextLine();
            nameList.add(name);
        }
        for(int j=0;j<=4;j++){
            bw.write((String) nameList.get(j));
            //写入一个换行符,该方法会根据不同操作系统生成相应换行符
            bw.newLine();
        }
        bw.close();  //释放资源
        String str;
        FileReader fr1=new FileReader("src/name.txt");        //创建字符缓冲输入流对象
        BufferedReader br=new BufferedReader(fr1);
        System.out.println("\n-----------学生信息列表------------");
        while((str=br.readLine())!=null) {
            System.out.println(str);
        }
        br.close();
        //点名器:在第3个实验中生成一个name.txt文件,里面存储了班级同学的姓名,每个姓名占一行,要求通过程序实现随机点名器。
        String str2;
        FileReader fr2=new FileReader("src/name.txt");
        List nameList2=new ArrayList();                      //创建ArrayList集合对象
        BufferedReader br2=new BufferedReader(fr2);          //创建字符缓冲输入流对象
        while((str2=br2.readLine())!=null) {                 //通过字符缓冲输入流对象的方法读数据,每读一个名字(一行数据)数据作为集合元素存储到集合中。
            nameList2.add(str2);
        }
        br2.close();                                         //释放资源
        System.out.print("随机点名器:");
        Random random=new Random();                          //使用Random产生一个随机数
        int count=random.nextInt(nameList2.size());          //随机数范围为【0,集合的长度)
        System.out.println(nameList2.get(count));            //随机数作为索引获取集合的元素并输出
        //添加一个用户信息到文件(使用对象输出输入流)
        Student student1=new Student("lxh");
        nameList.add(student1.getName());
        //创建文件输出流对象,将数据写入name.txt文件
        FileOutputStream fos1=new FileOutputStream("src/name.txt");
        //创建对象输出流对象
        ObjectOutputStream oos=new ObjectOutputStream(fos1);
        oos.writeObject(student1);      //将s对象序列化
        FileInputStream fis1=new FileInputStream("src/name.txt");
        ObjectInputStream ois=new ObjectInputStream(fis1);
        //从student.txt文件中读取数据
        Student student2=(Student)ois.readObject();
        System.out.println("已添加学生:"+student2.getName());
        //添加多个用户信息到文件(采用集合并使用对象输出输入流)
        System.out.print("请输入添加的学生信息的数量:");
        int number=scanner1.nextInt();
        System.out.println("请输入学生名字:");
        List nameList1=new ArrayList();
        //每次读取一行文本,判断是否到文件末尾
        for(int i=0;i<=number;i++){
            String name1=scanner1.nextLine();
            nameList1.add(name1);
        }
        for(int i=1;i

本站内容来自用户投稿,如果侵犯了您的权利,请与我们联系删除。联系邮箱:835971066@qq.com

本文链接:http://news.xiuzhanwang.com/post/2415.html

发表评论

评论列表

还没有评论,快来说点什么吧~

友情链接: