2024-08-13

块元素(block element):

  1. 独占一行,表现为另起一行开始,一直到换行结束。
  2. 可以设置宽度、高度、外边距(margin)和内边距(padding)。
  3. 常见块元素有:<h1>, <p>, <div>, <ul>, <table>等。

行内元素(inline element):

  1. 和其他元素在同一行上,不会另起一行。
  2. 不能直接设置宽度、高度、外边距(margin)和内边距(padding),它的大小由内容撑开。
  3. 常见行内元素有:<span>, <a>, <img>, <input>等。

行内块元素(inline-block element):

  1. 和其他元素在同一行上,表现为另起一行开始,一直到换行结束。
  2. 可以设置宽度、高度、外边距(margin)和内边距(padding)。
  3. 常见行内块元素有:<img>, <input>, <td>等。
2024-08-13

CSS的2D和3D转换、动画以及过渡效果通常需要浏览器特定的“前缀”,以确保在不同浏览器上的兼容性。这些前缀包括但不限于以下几种:

  • 对于2D转换,你可能会用到 transform 属性,这时候的前缀是 -webkit-transform-moz-transform-o-transform 等。
  • 对于3D转换,除了2D转换的前缀,还需要额外的 -webkit-transform-style-webkit-perspective 属性。
  • 对于动画,animationtransition 属性都需要前缀。

以下是一个简单的示例,展示了如何为CSS的2D转换添加浏览器私有前缀:




/* 标准语法 */
.box {
  transform: rotate(45deg);
  /* 其他样式 */
}
 
/* 浏览器私有前缀 */
.box {
  -webkit-transform: rotate(45deg); /* Chrome, Safari, 新版 Edge */
  -moz-transform: rotate(45deg);    /* Firefox */
  -ms-transform: rotate(45deg);     /* 旧版 IE */
  -o-transform: rotate(45deg);      /* 旧版 Opera */
  /* 其他样式 */
}

对于3D转换,你还需要添加 transform-style: preserve-3d;perspective: 1000px; 等样式:




/* 标准语法 */
.stage {
  transform-style: preserve-3d;
  perspective: 1000px;
  /* 其他样式 */
}
 
/* 浏览器私有前缀 */
.stage {
  -webkit-transform-style: preserve-3d;
  -webkit-perspective: 1000px;
  /* 其他样式 */
}

对于CSS动画,你需要添加如 animationtransition 的前缀:




/* 标准语法 */
.box {
  animation: slide-in 1s ease-in-out forwards;
  /* 其他样式 */
}
 
/* 浏览器私有前缀 */
.box {
  -webkit-animation: slide-in 1s ease-in-out forwards;
  -moz-animation: slide-in 1s ease-in-out forwards;
  -ms-animation: slide-in 1s ease-in-out forwards;
  -o-animation: slide-in 1s ease-in-out forwards;
  /* 其他样式 */
}

现代浏览器通常不再需要特定的私有前缀,但为了确保广泛的兼容性,你可能需要在某些旧版本的浏览器中包含这些前缀。自动添加这些前缀的工具和构建工具(如 Gulp、Webpack 和 Sass/LESS 预处理器)能够帮助简化这个过程。

2024-08-13



const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
const TerserPlugin = require('terser-webpack-plugin');
const path = require('path');
 
module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
    clean: true,
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          MiniCssExtractPlugin.loader,
          'css-loader',
        ],
      },
      {
        test: /\.less$/,
        use: [
          MiniCssExtractPlugin.loader,
          'css-loader',
          'less-loader',
        ],
      },
      {
        test: /\.(png|svg|jpg|jpeg|gif)$/i,
        type: 'asset/resource',
      },
      {
        test: /\.(woff|woff2|eot|ttf|otf)$/i,
        type: 'asset/resource',
      },
    ],
  },
  plugins: [
    new MiniCssExtractPlugin({
      filename: 'styles.css',
    }),
  ],
  optimization: {
    minimize: true,
    minimizer: [
      new CssMinimizerPlugin(),
      new TerserPlugin(),
    ],
    cleanStaleWebpackAssets: true,
  },
};

这个配置文件展示了如何使用Webpack 5来处理各种资源,包括CSS、LESS、图片和字体文件。它使用了mini-css-extract-plugin插件来提取CSS,并通过css-loaderless-loader来处理LESS文件。图片和字体文件被处理成Webpack资产,并在优化阶段被清理。

2024-08-13

在CSS中,可以使用text-overflow属性来实现当文本内容超出指定宽度时显示省略号。同时,需要设置white-space属性为nowrap以防止文本自动换行,以及overflow属性为hidden以隐藏超出容器的文本。

下面是一个简单的例子:




.ellipsis {
  width: 200px; /* 指定宽度 */
  white-space: nowrap; /* 防止自动换行 */
  overflow: hidden; /* 隐藏超出部分 */
  text-overflow: ellipsis; /* 使用省略号 */
}



<div class="ellipsis">
  这是一段很长的文本内容,当超出指定宽度时,希望显示省略号。
</div>

在这个例子中,.ellipsis类应用于一个div元素,当内容超出200px宽度时,会在末尾显示省略号。

2024-08-13

CSS transition 属性用于设置一个属性的过渡效果。它可以让属性的变化在一定的时间内平滑地进行。

基本语法:




transition: property duration timing-function delay;
  • property:定义应用过渡效果的 CSS 属性名称。
  • duration:定义过渡效果花费的时间长度。
  • timing-function:定义过渡效果的速度曲线,默认为 "ease"。
  • delay:定义过渡效果何时开始,默认是 0,即立即开始。

示例代码:




div {
  width: 100px;
  height: 100px;
  background-color: blue;
  transition: width 1s ease-in-out;
}
 
div:hover {
  width: 200px;
}

在上述例子中,当鼠标悬停在 div 上时,它的宽度会在 1 秒内从 100px 平滑过渡到 200px,速度曲线为 "ease-in-out"。

2024-08-13



/* 使用Tailwind CSS实现响应式布局 */
 
/* 基本的布局样式 */
.container {
  @apply max-w-screen-xl mx-auto;
}
 
/* 在不同屏幕尺寸下应用不同的container宽度比例 */
.container-md {
  @apply max-w-screen-md;
}
 
.container-lg {
  @apply max-w-screen-lg;
}
 
.container-xl {
  @apply max-w-screen-xl;
}
 
/* 使用Tailwind CSS的display和flex相关类来实现响应式的网格系统 */
.grid-container {
  @apply flex flex-wrap;
}
 
.grid-item {
  @apply w-full sm:flex-1 md:w-1/2 lg:w-1/3 xl:w-1/4;
}
 
/* 使用Tailwind CSS的screens函数和min-w-0和h-full类实现响应式内容填充 */
.responsive-content {
  @apply min-w-0 h-full;
  @screen sm {
    @apply mt-4;
  }
}
 
/* 使用Tailwind CSS的utilities实现响应式的边距和填充 */
.responsive-padding {
  @apply p-4 sm:p-6 lg:p-8 xl:p-10;
}
 
.responsive-margin {
  @apply mb-4 sm:mb-6 lg:mb-8 xl:mb-10;
}

这个例子展示了如何使用Tailwind CSS的实用工具类来创建一个响应式的布局。通过定义不同的容器类和网格选项,开发者可以根据屏幕尺寸来调整布局的宽度和列的数量。同时,使用Tailwind CSS的屏幕函数特性,可以在不同屏幕尺寸下应用不同的样式规则。

2024-08-13



/* 导入字体图标库 */
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap');
 
/* 全局样式 */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box; /* 包括边框和内边距在元素宽高内 */
}
 
body {
  font-family: 'Roboto', sans-serif; /* 设置默认字体 */
  background-color: #F7F7F7; /* 背景色设置为浅灰色 */
  color: #333; /* 字体颜色设置为深灰色 */
  overflow: hidden; /* 隐藏默认滚动条,后续如果有滚动条则特别设置 */
}
 
/* 清除浮动 */
.clearfix::after {
  content: '';
  display: table;
  clear: both;
}
 
/* 设置图标库使用范围,避免影响其他元素 */
#root,
#root * {
  font-family: 'Material Icons'; /* 指定字体库为图标库 */
}
 
/* 设置图标库的字体显示大小 */
#root .material-icons {
  font-size: 24px; /* 设置图标字体大小 */
  vertical-align: middle; /* 垂直对齐方式为中间 */
  user-select: none; /* 禁止文字被选中 */
}
 
/* 设置图标库图标的默认颜色 */
#root .material-icons.inactive {
  color: #999; /* 设置图标颜色为浅灰色 */
}

这段代码设置了基本的CSS规则,包括字体导入、全局样式、清除浮动、图标库的使用和字体样式设置。这对于理解如何在前端项目中整合和设计CSS样式非常有帮助。

2024-08-13

以下是一个简单的HTML和CSS示例,用于创建一个包含吉林省基本信息的网页。JavaScript在此处不是必需的,因为我们只是在展示静态内容。




<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>吉林省</title>
    <style>
        body {
            font-family: Arial, sans-serif;
        }
        .header {
            background-color: #4CAF50;
            color: white;
            padding: 10px;
            text-align: center;
        }
        .content {
            padding: 20px;
        }
        img {
            display: block;
            margin: auto;
        }
    </style>
</head>
<body>
    <div class="header">
        <h1>吉林省</h1>
    </div>
    <div class="content">
        <p>吉林,省份位于中国东北部,地处黄土高原东部,长江下游,沿岸是大东海。吉林省是中国面积最大的省份之一,也是中国最大的碳碳排放来源之一。</p>
        <img src="吉林省地图.jpg" alt="吉林省地图">
        <p>吉林省的气候以亚热带为主,冬季寒冷,夏季炎热。省内有“四大明珠”之称的吉林明珠、长春明珠、四平明珠和延边明珠。</p>
        <p>主要农作物有大麦、小麦、大麦、大麦等,吉林羊毛和吉林豆腐是省份的重要经济作物。</p>
    </div>
</body>
</html>

这个示例中,我们定义了一个简单的HTML结构,包括页面标题和内容。CSS用于提供页面的视觉样式,包括颜色、字体和页面布局。我们还包括了一个图片元素,展示吉林省的地图。这个示例假设你有吉林省的地图图片,并且正确地放置在网页可以访问的位置。

2024-08-13

CSS的Flex布局是一种灵活的布局模型,可以用来创建一个活动的、灵活的、响应式的布局。它可以使你的布局有着不同的方向,能够改变项目的顺序,以及其他的布局功能。

以下是一些使用CSS Flex布局的方法:

  1. 创建一个Flex容器:



.container {
  display: flex;
}
  1. 设置Flex项目在容器中的方向:



.container {
  display: flex;
  flex-direction: row | row-reverse | column | column-reverse;
}
  1. 设置Flex项目在容器中的对齐方式:



.container {
  display: flex;
  justify-content: flex-start | flex-end | center | space-between | space-around;
}
  1. 设置Flex项目在交叉轴上的对齐方式:



.container {
  display: flex;
  align-items: flex-start | flex-end | center | baseline | stretch;
}
  1. 设置Flex项目在容器主轴上的排序:



.item {
  order: <integer>; /* 默认是0 */
}
  1. 设置Flex项目在容器交叉轴上的对齐方式:



.item {
  align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
  1. 设置Flex项目的放大比例:



.item {
  flex-grow: <number>; /* 默认是0 */
}
  1. 设置Flex项目的缩放比例:



.item {
  flex-shrink: <number>; /* 默认是1 */
}
  1. 设置Flex项目的固定大小:



.item {
  flex-basis: <length> | auto; /* 默认是auto */
}

以上就是一些使用CSS Flex布局的基本方法,你可以根据自己的需求来使用它们。

2024-08-13



/* 设置元素的盒模型类型为border-box,这样元素的宽高就是内容、内边距和边框的总和 */
.box {
  box-sizing: border-box;
  width: 100px;
  height: 100px;
  padding: 10px;
  border: 5px solid black;
  margin: 20px;
}
 
/* 清除元素的浮动,防止浮动影响其他元素布局 */
.clearfix::after {
  content: "";
  display: table;
  clear: both;
}
 
/* 绝对定位元素,并设置其相对于最近的已定位祖先元素的偏移 */
.positioned {
  position: absolute;
  top: 10px;
  right: 20px;
}
 
/* 相对定位元素,并设置其相对于其正常位置的偏移 */
.relative {
  position: relative;
  bottom: 5px;
  left: 15px;
}
 
/* 固定定位元素,始终相对于浏览器窗口进行定位 */
.fixed {
  position: fixed;
  bottom: 0;
  right: 0;
}
 
/* 固定宽度的元素,适合小型设备屏幕 */
.container {
  width: 100%;
  padding-right: 15px;
  padding-left: 15px;
  margin-right: auto;
  margin-left: auto;
}
 
@media (min-width: 576px) {
  .container {
    max-width: 540px;
  }
}
 
@media (min-width: 768px) {
  .container {
    max-width: 720px;
  }
}
 
@media (min-width: 992px) {
  .container {
    max-width: 960px;
  }
}
 
@media (min-width: 1200px) {
  .container {
    max-width: 1140px;
  }
}

这个CSS样例展示了如何使用CSS设置盒模型、清除浮动、绝对定位、相对定位和固定定位,并构建一个响应式的容器类,适用于不同的屏幕尺寸。这些技术是前端开发中的基本知识点,对于学习前端开发的开发者来说具有重要意义。