day5 选择器 嵌套规则 背景

html命名

a 名字用小写字母

b 可以英文开头,不能使用中文,不能用数字开头,可以用- 和 _  或者用大小写

c 见名知意

css注释是/* */  html注释是<!-- -->

命名方式:

1、id命名

css中可以用 # 选择

id命名具有唯一性

2、class命名

css中用  . 选择

class可以重复 一个class用于多个盒子

初级选择器

<style>
*{}
</style>

1、通配符选择器:*选中所有标签

2、标签选择器 也叫元素选择器

3、id选择器#id

4、类选择器 .class

类选择器全写是div.class  .class是一种省略

5、后代选择器

ul li a{}

空格表示下一级

ul a{}

匹配所有ul标签后面的a标签

6、子代选择器

ul>a{}

 用大于号

html标签的嵌套规则

1、块级标签可以包含行内标签,但是行内标签绝对不能包含块级标签,行内标签只能包裹行内标签

2、有些块级标签不能被块级标签包含 p标签不能包裹块级标签 例如:p标签 h1~h6 dt

块级标签有三个级别:一是body 二是div这种可以自由嵌套的级别 三是 p标签这种不能自由嵌套的

3、块级元素与块级元素并列,行内元素与行内元素并列

4、ul li / ol li /dl dt dd都是固定的

5、a标签不能嵌套a标签

6、a标签可以嵌套块标签

背景

background-color 背景颜色

background-image背景图片 url('路径')

background-repeat 背景平铺  no-repeat不平铺  repeat-x x轴平铺   repeat-y  y轴平铺

<style>
    body{
        background-image:url(./img/bg.jpg);
        background-size:100px;
        backgtound-repeat:no-repeat

    }

</style>

background-size:cover;铺面两个轴后,多与的部分会被裁剪。

background-size:contain;铺面一条轴后停止。

定位

background-position:50px 100px;第一个是距左上x轴距离   第二个是距左上y轴距离

不写垂直距离是默认居中

x轴:left center right

y轴:top center bottom

背景关联

background-attachment:fixed;让背景相互附着着滚动

背景属性:背景颜色 路径 平铺 位置 大小

color url repeat background-position background-size

好的,我来为你介绍一下如何手写滚动日期选择器。我们可以利用Vue框架中的指令来实现这个效果。 首先,我们需要在HTML中创建一个容器来放置日期选择器组件,如下所示: ```html <div class="date-picker" v-click-outside="hidePicker"> <input type="text" v-model="selectedDate" @click="showPicker" readonly> <div class="picker-container" v-show="show"> <div class="picker-header"> <button @click="prevMonth"><</button> <span>{{ currentYear }}年{{ currentMonth }}月</span> <button @click="nextMonth">></button> </div> <div class="picker-body"> <div class="picker-row" v-for="week in weeks"> <div class="picker-cell" v-for="day in week" :class="{ 'is-today': isToday(day), 'is-selected': isSelected(day) }" @click="selectDate(day)"> {{ day }} </div> </div> </div> </div> </div> ``` 在上面的代码中,我们创建了一个`date-picker`的容器,其中包含一个`input`输入框和一个日期选择器的弹出框。输入框中绑定了`selectedDate`变量,用来显示当前选择的日期。日期选择器的弹出框使用了Vue的指令`v-show`来控制其显示和隐藏状态。 接下来,我们需要在Vue组件的`data`属性中定义一些变量,如下所示: ```javascript data() { return { selectedDate: '', show: false, currentYear: new Date().getFullYear(), currentMonth: new Date().getMonth() + 1, currentDate: new Date().getDate(), weeks: [], days: [] } } ``` 在上面的代码中,我们定义了一些重要的变量。`selectedDate`用来保存用户选择的日期,`show`用来控制日期选择器的显示和隐藏状态,`currentYear`、`currentMonth`和`currentDate`用来记录当前日期,`weeks`和`days`用来保存渲染日期选择器所需要的数据。 接下来,我们需要在Vue组件的`mounted`钩子函数中初始化日期选择器的数据,如下所示: ```javascript mounted() { // 初始化日期选择器数据 this.initWeeks() this.initDays() } ``` 在上面的代码中,我们调用了`initWeeks`和`initDays`两个函数来初始化日期选择器的数据。 `initWeeks`函数用来初始化日期选择器的星期数据,如下所示: ```javascript initWeeks() { this.weeks = [ ['日', '一', '二', '三', '四', '五', '六'] ] } ``` 在上面的代码中,我们定义了一个数组`weeks`,其中包含了一周内的所有日期。 `initDays`函数用来初始化日期选择器的日期数据,如下所示: ```javascript initDays() { const firstDay = new Date(this.currentYear, this.currentMonth - 1, 1).getDay() // 当月第一天是星期几 const lastDay = new Date(this.currentYear, this.currentMonth, 0).getDate() // 当月最后一天是几号 let days = [] let day = 1 for (let i = 0; i < 6; i++) { let week = [] for (let j = 0; j < 7; j++) { if (day > lastDay) { break } if (i === 0 && j < firstDay) { week.push('') } else { week.push(day++) } } days.push(week) } this.days = days } ``` 在上面的代码中,我们使用了`Date`对象来获取当前日期所在月份的第一天和最后一天,然后使用一个嵌套循环来遍历当前月份的所有日期,并将它们保存在一个二维数组中。 接下来,我们需要在Vue组件中定义一些方法来处理用户的交互操作,如下所示: ```javascript methods: { // 显示日期选择器 showPicker() { this.show = true }, // 隐藏日期选择器 hidePicker() { this.show = false }, // 上一个月 prevMonth() { if (this.currentMonth === 1) { this.currentYear -= 1 this.currentMonth = 12 } else { this.currentMonth -= 1 } this.initDays() }, // 下一个月 nextMonth() { if (this.currentMonth === 12) { this.currentYear += 1 this.currentMonth = 1 } else { this.currentMonth += 1 } this.initDays() }, // 选择日期 selectDate(day) { if (day === '') { return } this.selectedDate = `${this.currentYear}-${this.currentMonth}-${day}` this.hidePicker() }, // 判断是否为今天 isToday(day) { return this.currentYear === new Date().getFullYear() && this.currentMonth === new Date().getMonth() + 1 && day === new Date().getDate() }, // 判断是否为选择状态 isSelected(day) { return this.selectedDate === `${this.currentYear}-${this.currentMonth}-${day}` } } ``` 在上面的代码中,我们定义了一些方法来处理用户的交互操作。`showPicker`和`hidePicker`方法用来显示和隐藏日期选择器的弹出框。`prevMonth`和`nextMonth`方法用来切换日期选择器的月份。`selectDate`方法用来选择日期并保存到`selectedDate`变量中。`isToday`方法用来判断一个日期是否为今天。`isSelected`方法用来判断一个日期是否为选择状态。 最后,我们需要在Vue组件中使用`v-click-outside`指令来处理日期选择器的点击外部区域隐藏弹出框的功能,如下所示: ```javascript directives: { 'click-outside': { bind(el, binding, vnode) { el.clickOutsideEvent = function(event) { if (!(el === event.target || el.contains(event.target))) { vnode.context[binding.expression](event) } } document.body.addEventListener('click', el.clickOutsideEvent) }, unbind(el) { document.body.removeEventListener('click', el.clickOutsideEvent) } } } ``` 在上面的代码中,我们使用了`v-click-outside`指令来处理日期选择器的点击外部区域隐藏弹出框的功能。我们定义了一个`click-outside`指令,并在其中使用了`addEventListener`和`removeEventListener`方法来监听和移除点击事件。 以上就是手写滚动日期选择器的Vue实现方法。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值