2024-08-12

CSS3的text-overflow属性通常与white-spaceoverflow属性一起使用,来实现当文本超出其包含块的时候显示省略号。

以下是实现文本截取并显示省略号的CSS样式:




.ellipsis {
  white-space: nowrap;      /* 确保文本在一行内显示 */
  overflow: hidden;         /* 隐藏超出容器的文本 */
  text-overflow: ellipsis;  /* 使用省略号表示被截断的文本 */
}

接下来是HTML部分:




<div class="ellipsis">
  这是一段很长的文本,需要被截断并显示省略号...
</div>

当这段文本的宽度超出包含它的容器时,超出的部分会被省略号...替代。

2024-08-12

媒体查询(Media Queries)是CSS3的一个功能,可以根据不同的设备特性如屏幕尺寸、分辨率等来应用不同的样式规则。

容器查询(Container Queries)是CSS提案中的一部分,目的是让CSS规则可以根据容器的宽度和高度来调整样式。这个特性还没有被所有浏览器支持,因此,在实际开发中,可以通过媒体查询来近似实现响应式布局。

下面是使用媒体查询实现响应式布局的示例代码:




/* 基础样式 */
.container {
  background-color: lightblue;
  padding: 10px;
}
 
/* 当屏幕宽度小于或等于768像素时 */
@media (max-width: 768px) {
  .container {
    background-color: orange;
    padding: 5px;
  }
}
 
/* 当屏幕宽度大于768像素时 */
@media (min-width: 769px) {
  .container {
    background-color: green;
    padding: 15px;
  }
}

在HTML中使用:




<div class="container">
  响应式布局示例
</div>

上述代码中,.container 类定义了一个基础样式。媒体查询根据屏幕的宽度改变这个容器的背景颜色和内边距。这样就实现了不同屏幕尺寸下的样式适配。

2024-08-12



.cloud {
  position: absolute;
  width: 200px;
  height: 100px;
  background: linear-gradient(to right, #fff 20%, rgba(255, 255, 255, 0) 80%);
  border-radius: 100px 100px 0 0;
  transform: translateX(-50px) translateY(-50px) rotate(-45deg);
  animation: cloud-animation 5s linear infinite;
}
 
.cloud:before, .cloud:after {
  content: '';
  position: absolute;
  width: 100px;
  height: 100px;
  background: linear-gradient(to right, #fff 20%, rgba(255, 255, 255, 0) 80%);
  border-radius: 50%;
}
 
.cloud:before {
  transform: translateX(50px) translateY(50px) rotate(22.5deg);
}
 
.cloud:after {
  transform: translateX(-50px) translateY(50px) rotate(-22.5deg);
}
 
@keyframes cloud-animation {
  0% {
    transform: translateX(-50px) translateY(-50px) rotate(-45deg);
  }
  100% {
    transform: translateX(50px) translateY(-50px) rotate(225deg);
  }
}

这段代码使用CSS创建了一个动态云朵效果。它使用了伪元素 :before:after 来创建云朵的两个部分,并通过关键帧动画(@keyframes)实现了动态的旋转和移动效果。这是一个简单而又实际的动画示例,适合用于教学目的。

2024-08-12

以下是一个使用JavaScript实现的简单的填涂画板示例。这个示例使用了HTML5 <canvas> 元素和相关的API来实现绘图功能。

HTML部分:




<!DOCTYPE html>
<html>
<body>
<canvas id="myCanvas" width="480" height="320" style="border:1px solid #000000;"></canvas>
<script src="paint_board.js"></script>
</body>
</html>

JavaScript部分 (paint\_board.js):




var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
var isPainting = false;
 
function startPosition(e) {
  isPainting = true;
  [prevX, prevY] = [e.offsetX, e.offsetY];
}
 
function moving(e) {
  if (isPainting) {
    var currentX = e.offsetX;
    var currentY = e.offsetY;
    draw(currentX, currentY, prevX, prevY);
    [prevX, prevY] = [currentX, currentY];
  }
}
 
function endPosition(e) {
  isPainting = false;
}
 
function draw(x, y, prevX, prevY) {
  ctx.beginPath();
  ctx.moveTo(prevX, prevY);
  ctx.lineTo(x, y);
  ctx.stroke();
  ctx.closePath();
}
 
canvas.addEventListener('mousedown', startPosition);
canvas.addEventListener('mousemove', moving);
canvas.addEventListener('mouseup', endPosition);
canvas.addEventListener('mouseleave', endPosition);

这段代码实现了基本的绘画功能。用户可以在画布上按下鼠标来开始绘画,然后移动鼠标进行绘制。当用户释放鼠标或者鼠标离开画布区域时,结束绘制过程。这个示例使用了<canvas>元素和context对象的beginPathmoveTolineTostrokeclosePath方法来绘制线条。

2024-08-12

CSS3 过渡和 3D 动画可以通过改变元素的转换属性来实现,比如使用 transform 属性的 rotateX, rotateY, rotateZ 函数,以及 translateX, translateY, translateZ 函数,以及 scale 函数。下面是一个简单的 3D 旋转过渡动画的例子:

HTML:




<div class="box"></div>

CSS:




.box {
  width: 100px;
  height: 100px;
  background-color: red;
  margin: 50px;
  transition: transform 2s;
}
 
.box:hover {
  transform: rotateY(360deg);
}

在这个例子中,.box 元素在鼠标悬停时旋转 Y 轴 360 度,形成一个 3D 旋转动画。transition 属性定义了变化发生的时长。这个动画是平面的,为了添加 3D 效果,你可以在 HTML 和 CSS 中添加一些结构,并使用 perspective 属性给父元素添加透视。

2024-08-11



/* 定义主题变量 */
:root {
  --primary-bg-color: #fff; /* 默认背景色 */
  --primary-text-color: #000; /* 默认文本颜色 */
}
 
/* 应用主题变量 */
body {
  background-color: var(--primary-bg-color);
  color: var(--primary-text-color);
}
 
/* 切换主题的JavaScript函数 */
function toggleTheme() {
  const currentTheme = localStorage.getItem('theme');
  const theme = currentTheme === 'dark' ? 'light' : 'dark';
  localStorage.setItem('theme', theme);
  document.body.classList.toggle('theme-dark', theme === 'dark');
  document.body.classList.toggle('theme-light', theme === 'light');
}
 
/* 在body上切换主题类 */
body {
  --primary-bg-color: #000; /* 暗色背景色 */
  --primary-text-color: #fff; /* 暗色文本颜色 */
}
 
.theme-dark {
  --primary-bg-color: #fff; /* 亮色背景色 */
  --primary-text-color: #000; /* 亮色文本颜色 */
}
 
/* 用户点击按钮时切换主题 */
<button onclick="toggleTheme()">切换主题</button>

这段代码定义了一个主题切换功能,通过JavaScript函数toggleTheme来改变页面的主题。当用户点击按钮时,会从本地存储中读取当前主题,然后切换到相对的主题,并更新本地存储。同时,通过切换body元素的类来应用新的CSS变量值,从而实现主题的切换。

2024-08-11

在CSS3中,max-contentmin-contentfit-content是三个与长度和大小相关的特殊关键字,它们可以用作元素的宽度(width)。

  1. min-content: 指定内容的最小宽度。对于块级元素,这通常是元素中最宽的子元素的宽度。对于行内元素,这是元素中的文字或图片的自然宽度。
  2. max-content: 指定内容的最大宽度。对于块级元素,这通常是元素中所有子元素的最大宽度。对于行内元素,这是容器宽度或视图宽度,取决于哪个限制更严格。
  3. fit-content: 是min-contentmax-content的折中。它是内容宽度与可用空间中的最大值中的较小值。

示例代码:




/* 使用min-content */
.element-min {
  width: min-content;
}
 
/* 使用max-content */
.element-max {
  width: max-content;
}
 
/* 使用fit-content */
.element-fit {
  width: fit-content;
}

HTML结构:




<div class="element-min">这是min-content的例子。它会使元素的宽度尽可能短。</div>
<div class="element-max">这是max-content的例子。它会使元素的宽度尽可能长。</div>
<div class="element-fit">这是fit-content的例子。它会使元素的宽度尽可能适中。</div>

以上代码会使元素的宽度根据内容类型的最小、最大或适中大小来设置。

2024-08-11

以下是一个使用CSS Flexbox布局创建简单骰子的示例代码:




<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flex Dice</title>
<style>
  .dice {
    display: flex;
    justify-content: space-around;
    align-items: center;
    width: 100px;
    height: 100px;
    background-color: #e0e0e0;
    border: solid 2px #606060;
    border-radius: 10px;
    font-size: 30px;
    font-weight: bold;
    text-align: center;
    line-height: 100px;
  }
</style>
</head>
<body>
<div class="dice">1</div>
</body>
</html>

这段代码创建了一个类似于骰子的正方形盒子,其中包含了数字1。可以通过调整.dice类中的widthheightbackground-colorborder等属性来创建不同样式的骰子面。如果需要创建具有不同数字的骰子,可以通过JavaScript动态更改.dice内的文本。

2024-08-11

CSS属性的计算过程涉及多个阶段,包括值的解析、转换和计算。以下是这个过程的简化描述和相关的代码示例:

  1. 值的解析:

    CSS值可能是直接指定的,比如10px,或者是通过计算得出的,比如calc(50% + 10px)。解析阶段将这些值转换为计算机可以理解的形式。

  2. 值的转换:

    不同的单位需要转换成统一的数值格式,例如,10px转换为101em转换为相对于当前字体大小的数值。

  3. 值的计算:

    当所有值都被转换后,进行实际的计算,例如相对大小的元素会根据其父元素的大小调整位置。

示例代码:




/* 使用calc()函数计算宽度 */
div {
  width: calc(100% - 20px); /* 宽度为父元素宽度减去20像素 */
}

在这个例子中,calc()函数允许你执行简单的数学运算,这有助于简化复杂的值的定义。在计算阶段,浏览器会解析函数中的表达式,转换所有的值,并最终计算出div的实际宽度。

2024-08-11

在HTML中,要修改某个字的颜色,通常需要使用CSS。你可以直接在元素的style属性中写入CSS代码,或者在<head>标签内的<style>标签中定义CSS规则,或者在外部CSS文件中定义。

以下是一个简单的例子,演示如何只修改一个特定单词的颜色:




<!DOCTYPE html>
<html>
<head>
<style>
  .red-text {
    color: red;
  }
</style>
</head>
<body>
 
<p>这是一个<span class="red-text">红色</span>的单词。</p>
 
</body>
</html>

在这个例子中,我们定义了一个叫.red-text的CSS类,并将其颜色设置为红色。然后我们在HTML中的<span>元素上应用这个类,这样就只有"红色"这个单词显示为红色。其他单词则保持正常文本颜色。