2024-08-10

第三天的学习内容是CSS,这是一种用来为HTML文件添加样式的标准。以下是一些CSS的基本用法示例:

  1. 内联样式:



<p style="color:blue;">这是一个蓝色的段落。</p>
  1. 内部样式表:



<head>
    <style>
        p { color: red; }
    </style>
</head>
<body>
    <p>这是一个红色的段落。</p>
</body>
  1. 外部样式表:

在一个单独的.css文件中:




/* style.css */
p {
    color: green;
}

在HTML文件中引用:




<head>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <p>这是一个绿色的段落。</p>
</body>
  1. CSS选择器:
  • 标签选择器(上面示例中的p
  • 类选择器:



<style>
    .center {
        text-align: center;
    }
</style>
<p class="center">这段文字居中显示。</p>
  • ID选择器:



<style>
    #big {
        font-size: 24px;
    }
</style>
<p id="big">这段文字字号为24px。</p>
  1. CSS盒模型:



div {
    width: 300px;
    padding: 10px;
    border: 5px solid blue;
    margin: 20px;
}
  1. CSS Flexbox布局:



.container {
    display: flex;
}
.item {
    flex: 1; /* 等于flex: 1 1 0; 表示可伸缩、可收缩、不设最小宽度 */
}



<div class="container">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
</div>
  1. CSS Grid布局:



.grid-container {
    display: grid;
    grid-template-columns: auto auto auto;
}
 
.grid-item {
    border: 1px solid red;
}



<div class="grid-container">
    <div class="grid-item">1</div>
    <div class="grid-item">2</div>
    <div class="grid-item">3</div>
</div>
  1. CSS伪类:



a:link { color: red; }
a:visited { color: green; }
a:hover { color: hotpink; }
a:active { color: blue; }



<a href="https://example.com">访问Example.com</a>
  1. CSS层叠:

当多个样式作用于同一元素时,具体的样式取决于选择器的特异性,以及它们在文档中的位置。后者通常意味着在HTML中越后定义的样式优先级越高。

  1. CSS定位:
  • 静态定位(默认)
  • 相对定位:



div {
    position: relative;
    top: 20px;
}
  • 绝对定位:



div {
    position: absolute;
    top: 10px;
}
  • 固定定位:



div {
    position: fixed;
    bottom: 0;
}
  • 粘性定位:



div {
    position: sticky;
2024-08-10

div盒子设置height: 100%无效的原因通常是因为其父元素的高度没有被定义。在CSS中,百分比的高度是相对于父元素的高度的,如果父元素的高度未设置或者未能传递下来,子元素设置height: 100%将不会有效。

解决办法:

  1. 确保父元素的高度被设置。可以给父元素设置固定的高度,或者使用%vhvwauto等单位。
  2. 使用flex布局:如果父元素使用display: flex;,子元素会自动占据剩余空间。
  3. 使用absolute定位:如果父元素使用position: relative;,子元素可以使用position: absolute;top: 0;bottom: 0;来使高度为100%。
  4. 使用min-height: 100vh;:当你想确保元素至少占据视口的100%高度时,可以使用min-height: 100vh;
  5. 使用JavaScript:如果父元素的高度是动态变化的,可以使用JavaScript动态计算并设置父元素的高度,然后子元素的height: 100%将生效。

示例代码:




/* 方法1:父元素设置高度 */
.parent {
  height: 500px; /* 或者其他单位 */
}
.child {
  height: 100%; /* 子元素继承父元素的高度 */
}
 
/* 方法2:使用Flex布局 */
.parent {
  display: flex;
}
.child {
  flex: 1; /* 子元素会自动占据剩余空间 */
}
 
/* 方法3:使用absolute定位 */
.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 0;
  bottom: 0;
}
 
/* 方法4:设置最小高度 */
.parent {
  min-height: 100vh; /* 视口的100%高度 */
}
.child {
  height: 100%;
}
 
/* 方法5:使用JavaScript */
// JavaScript代码示例
const parent = document.querySelector('.parent');
parent.style.height = window.innerHeight + 'px'; // 设置父元素高度为视口高度

选择合适的方法应用于具体场景中。

2024-08-10

CSS背景属性可以用来设置页面元素的背景样式。以下是一些常用的CSS背景属性:

  1. background-color: 设置元素的背景颜色。
  2. background-image: 设置元素的背景图片。
  3. background-repeat: 设置背景图片是否及如何重复。
  4. background-position: 设置背景图片的初始位置。
  5. background-size: 设置背景图片的大小。
  6. background-clip: 设置背景的绘制区域。
  7. background-origin: 设置背景图片的定位区域。
  8. background-attachment: 设置背景图片是否固定或者随着页面滚动。

示例代码:




/* 设置背景颜色为蓝色 */
div {
  background-color: blue;
}
 
/* 设置背景图片,不重复,位于左上角 */
div {
  background-image: url('image.jpg');
  background-repeat: no-repeat;
  background-position: left top;
}
 
/* 设置背景图片,覆盖整个元素,不重复,居中 */
div {
  background-image: url('image.jpg');
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center;
}
 
/* 设置背景图片固定,不随页面滚动 */
div {
  background-image: url('image.jpg');
  background-attachment: fixed;
}

简写形式可以一次性设置多个背景属性:




/* 简写形式设置背景 */
div {
  background: #ff0000 url('image.jpg') no-repeat center fixed;
}

记得在实际使用时根据需求调整属性值。

2024-08-10

要在Vue中使用aos.js动画库,你需要按照以下步骤操作:

  1. 安装aos.js



npm install aos --save
  1. 在Vue项目中引入aos.js和它的CSS文件:



// main.js 或者其他的入口文件
import Vue from 'vue'
import AOS from 'aos'
import 'aos/dist/aos.css'
 
Vue.use(AOS)
  1. 在Vue组件中使用aos指令:



<template>
  <div>
    <div v-aos="'fade-up'"></div>
    <div v-aos="'fade-down'"></div>
    <!-- 更多元素 -->
  </div>
</template>
 
<script>
export default {
  mounted() {
    AOS.init();
  }
}
</script>
  1. 确保在组件的mounted钩子中初始化AOS:



mounted() {
  AOS.init();
}
  1. 在你的Vue组件中,使用v-aos指令并指定动画效果。

确保你的Vue项目已经正确安装并配置了aos.js和它的CSS。在组件的mounted钩子函数中调用AOS.init()来初始化动画。在需要应用动画的元素上使用v-aos指令,并通过它的data-aos属性来设置动画的类型。

2024-08-10

在HTML中,表格(table)和表单(form)是常用的两个元素,用于展示和收集数据。以下是关于HTML表格和表单的详细解释和示例代码:

表格(table)

HTML表格由 <table> 标签定义,表头使用 <th> 标签,表行使用 <tr> 标签,单个单元格使用 <td> 标签。




<table border="1">
  <tr>
    <th>姓名</th>
    <th>年龄</th>
  </tr>
  <tr>
    <td>张三</td>
    <td>28</td>
  </tr>
  <tr>
    <td>李四</td>
    <td>32</td>
  </tr>
</table>

表单(form)

HTML表单用于收集用户输入信息,使用 <form> 标签定义,表单控件(输入元素)如文本框、单选按钮、下拉列表等,使用 <input> 标签定义,并通过 <label> 标签关联到 <input>




<form action="/submit" method="post">
  <label for="username">用户名:</label><br>
  <input type="text" id="username" name="username"><br>
  <label for="password">密码:</label><br>
  <input type="password" id="password" name="password"><br><br>
  <input type="submit" value="提交">
</form>

在这个例子中,表单包含两个输入框和一个提交按钮。当用户填写信息后点击提交按钮,表单数据会被发送到服务器上的 /submit 路径,使用POST方法传输。

2024-08-10

在CSS中,position属性用于定义元素的定位方式。这个属性有四个值:staticrelativeabsolutefixed

  1. static:默认值,无特殊定位,元素遵循正常文档流。
  2. relative:相对定位,元素相对于其正常位置进行定位。
  3. absolute:绝对定位,元素相对于最近的非static定位的祖先元素进行定位。
  4. fixed:固定定位,元素相对于浏览器窗口进行定位。

实例代码:




<!DOCTYPE html>
<html>
<head>
<style>
  .static {
    position: static;
    border: 3px solid #73AD21;
    padding: 10px;
    margin: 10px;
  }
 
  .relative {
    position: relative;
    top: 20px;
    left: 20px;
    border: 3px solid #424242;
    padding: 10px;
    margin: 10px;
  }
 
  .absolute {
    position: absolute;
    top: 10px;
    right: 10px;
    border: 3px solid #FF0000;
    padding: 10px;
    margin: 10px;
  }
 
  .fixed {
    position: fixed;
    bottom: 0;
    right: 0;
    border: 3px solid #0000FF;
    padding: 10px;
    margin: 10px;
  }
</style>
</head>
<body>
 
<div class="static">
  <p>这是一个静态定位的元素。</p>
</div>
 
<div class="relative">
  <p>这是一个相对定位的元素。</p>
</div>
 
<div class="absolute">
  <p>这是一个绝对定位的元素。</p>
</div>
 
<div class="fixed">
  <p>这是一个固定定位的元素。</p>
</div>
 
</body>
</html>

在这个例子中,我们创建了四个div元素,每个都使用了不同的position值。每个div都有自己的文本内容说明其定位方式。通过调整浏览器窗口的大小或滚动页面,可以看到fixed定位的元素始终固定在视窗的右下角,而absolute定位的元素相对于最近的非static定位的祖先元素(在这个例子中是视窗)进行定位。

2024-08-10

走马灯效果通常指的是文字滚动显示,类似于新闻滚动或者公告栏的效果。以下是一个简单的HTML、CSS和JavaScript结合的走马灯效果实现:

HTML:




<div id="marquee-container">
  <p id="marquee-text">这是走马灯效果的文本,将会从右向左滚动显示。</p>
</div>

CSS:




#marquee-container {
  width: 100%;
  overflow: hidden;
  white-space: nowrap;
}
 
#marquee-text {
  display: inline-block;
  animation: marquee 10s linear infinite;
}
 
@keyframes marquee {
  from { transform: translateX(100%); }
  to { transform: translateX(-100%); }
}

JavaScript (可选,用于处理文本长度动态调整滚动速度):




function adjustMarqueeSpeed(textElement, containerWidth) {
  const textWidth = textElement.getBoundingClientRect().width;
  if (textWidth > containerWidth) {
    const duration = textWidth / containerWidth * 10; // 10s基础上根据文本长度调整
    textElement.style.animationDuration = `${duration}s`;
  }
}
 
window.onload = function() {
  const container = document.getElementById('marquee-container');
  const text = document.getElementById('marquee-text');
  adjustMarqueeSpeed(text, container.offsetWidth);
};

这段代码实现了一个基本的走马灯效果。@keyframes定义了名为marquee的动画,通过改变transformtranslateX值实现滚动效果。JavaScript 代码用于在页面加载完成后调整走马灯的滚动速度,使得当文本长度超出容器宽度时可以更慢或者更快地滚动。

2024-08-10

以下是一个使用HTML、CSS和JavaScript实现的简单轮播图效果的示例代码。该示例包括分页按钮和切换箭头。




<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Image Slider</title>
<style>
  .slider {
    position: relative;
    width: 300px;
    height: 200px;
    margin: auto;
  }
  .slider img {
    width: 100%;
    height: 100%;
    position: absolute;
    opacity: 0;
    transition: opacity 0.5s;
  }
  .slider img.active {
    opacity: 1;
  }
  .pagination {
    position: absolute;
    bottom: 10px;
    left: 50%;
    transform: translateX(-50%);
  }
  .pagination button {
    cursor: pointer;
    padding: 5px;
    margin: 0 5px;
    background-color: #ddd;
    border: none;
    outline: none;
  }
  .pagination button.active {
    background-color: #007bff;
    color: white;
  }
  .arrow {
    cursor: pointer;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    font-size: 30px;
    color: #ddd;
    user-select: none;
  }
  .arrow:hover {
    color: #007bff;
  }
</style>
</head>
<body>
 
<div class="slider">
  <img src="image1.jpg" class="active">
  <img src="image2.jpg">
  <img src="image3.jpg">
 
  <div class="arrow left">&#10094;</div>
  <div class="arrow right">&#10095;</div>
 
  <div class="pagination">
    <button class="active"></button>
    <button></button>
    <button></button>
  </div>
</div>
 
<script>
  let index = 0;
  const images = document.querySelectorAll('.slider img');
  const pagination = document.querySelectorAll('.pagination button');
  const leftArrow = document.querySelector('.left');
  const rightArrow = document.querySelector('.right');
 
  function showImage(imageIndex) {
    images.forEach((img, i) => img.classList.toggle('active', i === imageIndex));
    pagination.forEach((button, i) => button.classList.toggle('active', i === imageIndex));
  }
 
  showImage(index);
 
  rightArrow.addEventListener('click', () => {
    index = (index + 1) % images.length;
    showImage(index);
  });
 
  leftArrow.addEventListener('click', () => {
    index = (index + images.length - 1) % images.length;
    showImage(index);
  });
 
  pagination.forEach((button, i) => {
    button.addEven
2024-08-10

要使用纯CSS实现一个类似瑞兔日历的效果,你可以参考以下的代码示例:




<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>RenRen Calendar</title>
<style>
  body {
    font-family: Arial, sans-serif;
  }
  .calendar {
    width: 240px;
    margin: 20px auto;
    padding: 10px;
    border: 1px solid #000;
  }
  .calendar-header {
    text-align: center;
    padding-bottom: 10px;
    border-bottom: 1px solid #000;
  }
  .calendar-weekdays {
    display: flex;
    justify-content: space-around;
    margin-bottom: 10px;
  }
  .calendar-weekday {
    width: 14.28%;
    text-align: center;
  }
  .calendar-month {
    text-align: center;
    font-size: 14px;
    font-weight: bold;
  }
  .calendar-days {
    display: grid;
    grid-template-columns: repeat(7, 14.28%);
  }
  .calendar-day {
    text-align: center;
    border-right: 1px solid #000;
    border-bottom: 1px solid #000;
    padding: 5px;
  }
  .calendar-day--current {
    background-color: #f0f0f0;
  }
</style>
</head>
<body>
<div class="calendar">
  <div class="calendar-header">
    <div class="calendar-month">August 2023</div>
  </div>
  <div class="calendar-weekdays">
    <div class="calendar-weekday">Sun</div>
    <div class="calendar-weekday">Mon</div>
    <div class="calendar-weekday">Tue</div>
    <div class="calendar-weekday">Wed</div>
    <div class="calendar-weekday">Thu</div>
    <div class="calendar-weekday">Fri</div>
    <div class="calendar-weekday">Sat</div>
  </div>
  <div class="calendar-days">
    <div class="calendar-day">1</div>
    <div class="calendar-day">2</div>
    <div class="calendar-day">3</div>
    <div class="calendar-day">4</div>
    <div class="calendar-day">5</div>
    <div class="calendar-day">6</div>
    <div class="calendar-day">7</div>
    <div class="calendar-day">8</div>
    <div class="calendar-day">9</div>
    <!-- ... other days ... -->
  </div>
</div>
</body>
</html>

这个简单的例子使用了CSS Grid布局来创建日历的网格,并使用Flexbox布局来创建星期的行。你可以根据需要添加更多的日期,并使用CSS来添加当前日期的特殊样式(比如背景颜色)。这个例子不包括任何JavaScript,仅使用CSS来创建一个静态的UI。

2024-08-10

CSS3盒子模型定义了用户代理应该如何计算一个元素的总宽度和总高度,这由box-sizing属性控制。

  • content-box:这是CSS2.1的盒子模型。元素的宽度/高度由width/height属性设置。元素的边框和内边距不会被包括在内。
  • border-box:元素的宽度/高度包含了元素的边框(border)和内边距(padding),不包括外边距(margin)。

例子:




/* 设置元素的盒子模型为content-box */
.content-box {
  width: 300px;
  padding: 10px;
  border: 5px solid black;
  box-sizing: content-box; /* 计算宽度和高度时,包含内容,但不包含边框和内边距 */
}
 
/* 设置元素的盒子模型为border-box */
.border-box {
  width: 300px;
  padding: 10px;
  border: 5px solid black;
  box-sizing: border-box; /* 计算宽度和高度时,包含内容、内边距和边框 */
}

在这个例子中,.content-box元素的总宽度将是300px + 10px(左右内边距) + 10px(左右边框) + 5px(左右边框) = 320px,高度类似计算。而.border-box元素的总宽度将是300px,内边距和边框都包含在这个宽度内。