使用css写一个按钮点击时背景颜色从右往左变成黑色的代码
时间: 2023-05-18 22:07:18 浏览: 219
您可以使用以下 CSS 代码来实现这个效果:
```css
.button {
background-color: white;
transition: background-color 0.5s ease;
}
.button:hover {
background-color: black;
background-image: linear-gradient(to left, black, white);
}
```
这个代码会让按钮的背景颜色从右往左渐变为黑色。当鼠标悬停在按钮上时,背景颜色会变成黑色,并且会出现一个渐变效果。
相关问题
jquery使用animate鼠标点击发送消息,每个div消息从右边往左边移动最后消息
可以通过jQuery的animate()方法来实现这个功能,具体步骤如下:
1. 给每个消息都添加一个唯一的ID,方便后续操作。
2. 给发送按钮添加一个点击事件,当点击按钮时,获取输入框里的文本内容。
3. 将文本内容插入到页面中,每个消息都放在一个div里。
4. 给每个消息的div设置一个初始位置,即从右边开始移动。
5. 使用animate()方法将每个消息div从右边移动到左边,同时设置动画持续时间和回调函数,当动画完成后将该消息div从页面中删除。
下面是一个简单的示例代码:
HTML:
```html
<input type="text" id="input">
<button id="send">发送</button>
<div id="chat-box"></div>
```
CSS:
```css
#chat-box {
position: relative;
overflow: hidden;
height: 200px;
width: 300px;
border: 1px solid #ccc;
}
.message {
position: absolute;
top: 0;
right: -200px;
width: 200px;
height: 40px;
line-height: 40px;
background-color: #f0f0f0;
border: 1px solid #ccc;
text-align: center;
}
```
JavaScript:
```javascript
$(function() {
var messageId = 0;
$('#send').click(function() {
var message = $('#input').val();
if (message) {
var id = 'message-' + messageId++;
var $message = $('<div></div>').attr('id', id).addClass('message').text(message);
$('#chat-box').append($message);
var width = $message.outerWidth();
$message.css('right', -width);
$message.animate({right: 0}, 500, function() {
$message.delay(2000).fadeOut(500, function() {
$message.remove();
});
});
$('#input').val('');
}
});
});
```
在这个示例代码中,我们首先给每个消息div添加了一个类名为“message”,并且设置了一个初始位置,即从右侧开始移动。然后,在点击发送按钮时,我们获取输入框中的文本内容,并将其插入到页面中。接着,使用animate()方法将该消息div从右侧移动到左侧,并设置动画持续时间为500毫秒。当动画完成后,我们使用delay()方法将该消息div延迟2秒钟后再进行fadeOut()淡出动画,并在淡出动画完成后将该消息div从页面中删除。
用javascript写一个动态表,第一行合并居中为“技术网络科考勤表”,第二行居中为年月,年的选择范围为2022年到2099年,月的选择范围为1-12月,根据当年闰年还是平年,可生成2月天数。第三行第一列为“人名”,第三行第二列为“时间,”从第三行第三列左到右根据年月生成当月日期,第四行从第三列从左到右根据第三行日期生成对应星期几。第五行第一列往下,分别为“渠际时”、“陈海峰”、”梁胜玉”、“袁凯”、“侯博文”、“孙逍遥”、“郭智豪”、“杨沐松“”。第五行第二列往下,每个人名生成三行对应班次“行政班”、“生产班”、“夜班”,每个班次对应日期生成矩形方框输入,可以打√输入。第四行34列为“值班天数”,往下统计出此行输入√天数。第四行35列为“带班”,从第五行35列每个表格生成下拉可选择人员“渠际时”、“陈海峰”、“梁胜玉”、“袁凯”、“侯博文”、“孙逍遥”、“郭智豪”、“杨沐松”。在表格末尾生成“提交保存”按钮,功能为保存当前表格数据。
好的,这是一个比较复杂的需求,需要用到HTML、CSS和JavaScript来实现。我将会给出一个简单的实现方案,你可以根据自己的需求进行修改和优化。
首先,我们需要创建一个HTML页面,其中包含一个表格,用于展示考勤信息。代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<title>技术网络科考勤表</title>
<style>
table {
border-collapse: collapse;
}
td, th {
border: 1px solid black;
padding: 5px;
text-align: center;
}
.center {
text-align: center;
}
.month {
width: 50px;
}
.date {
width: 30px;
}
.checkbox {
width: 20px;
height: 20px;
}
.select {
width: 100%;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<th colspan="35" class="center">技术网络科考勤表</th>
</tr>
<tr>
<th colspan="2" class="center">年月</th>
<th colspan="33" class="center">日期</th>
</tr>
<tr>
<th>人名</th>
<th>时间</th>
<th class="month">1</th>
<th class="month">2</th>
<th class="month">3</th>
<th class="month">4</th>
<th class="month">5</th>
<th class="month">6</th>
<th class="month">7</th>
<th class="month">8</th>
<th class="month">9</th>
<th class="month">10</th>
<th class="month">11</th>
<th class="month">12</th>
<th class="date">1</th>
<th class="date">2</th>
<th class="date">3</th>
<th class="date">4</th>
<th class="date">5</th>
<th class="date">6</th>
<th class="date">7</th>
<th class="date">8</th>
<th class="date">9</th>
<th class="date">10</th>
<th class="date">11</th>
<th class="date">12</th>
<th class="date">13</th>
<th class="date">14</th>
<th class="date">15</th>
<th class="date">16</th>
<th class="date">17</th>
<th class="date">18</th>
<th class="date">19</th>
<th class="date">20</th>
<th class="date">21</th>
<th class="date">22</th>
<th class="date">23</th>
<th class="date">24</th>
<th class="date">25</th>
<th class="date">26</th>
<th class="date">27</th>
<th class="date">28</th>
<th class="date">29</th>
<th class="date">30</th>
<th class="date">31</th>
<th>值班天数</th>
<th>带班</th>
</tr>
</thead>
<tbody>
<tr>
<td>渠际时</td>
<td>行政班</td>
<td class="checkbox"><input type="checkbox"></td>
<td class="checkbox"><input type="checkbox"></td>
<td class="checkbox"><input type="checkbox"></td>
<td class="checkbox"><input type="checkbox"></td>
<td class="checkbox"><input type="checkbox"></td>
<td class="checkbox"><input type="checkbox"></td>
<td class="checkbox"><input type="checkbox"></td>
<td class="checkbox"><input type="checkbox"></td>
<td class="checkbox"><input type="checkbox"></td>
<td class="checkbox"><input type="checkbox"></td>
<td class="checkbox"><input type="checkbox"></td>
<td class="checkbox"><input type="checkbox"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td class="date"><input type="text"></td>
<td>0</td>
<td>
<select class="select">
<option value="渠际时">渠际时</option>
<option value="陈海峰">陈海峰</option>
<option value="梁胜玉">梁胜玉</option>
<option value="袁凯">袁凯</option>
<option value="侯博文">侯博文</option>
<option value="孙逍遥">孙逍遥</option>
<option value="郭智豪">郭智豪</option>
<option value="杨沐松">杨沐松</option>
</select>
</td>
</tr>
<!-- 其他人员的行 -->
</tbody>
</table>
<button id="submit">提交保存</button>
<script src="attendance.js"></script>
</body>
</html>
```
在这个表格中,我们使用了三个不同的CSS类来设置样式。`.center`用于设置文本居中,`.month`和`.date`用于设置月份和日期的宽度。
接下来,我们需要使用JavaScript来动态生成表格中的内容。代码如下:
```javascript
// 获取表格
var table = document.querySelector('table');
// 创建年份选择框
var yearSelect = document.createElement('select');
yearSelect.classList.add('select');
for (var i = 2022; i <= 2099; i++) {
var option = document.createElement('option');
option.value = i;
option.textContent = i;
yearSelect.appendChild(option);
}
// 添加到表格中
table.rows[1].cells[0].appendChild(yearSelect);
// 创建月份选择框
var monthSelect = document.createElement('select');
monthSelect.classList.add('select');
for (var i = 1; i <= 12; i++) {
var option = document.createElement('option');
option.value = i;
option.textContent = i;
monthSelect.appendChild(option);
}
// 添加到表格中
table.rows[1].cells[1].appendChild(monthSelect);
// 获取当前年份和月份
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth() + 1;
// 根据年份和月份计算当月天数
function getDaysInMonth(year, month) {
var days = new Date(year, month, 0).getDate();
if (month == 2 && (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)) {
// 闰年2月29天
days = 29;
}
return days;
}
// 根据年份和月份生成日期选择框
function createDateInput(year, month) {
var days = getDaysInMonth(year, month);
var fragment = document.createDocumentFragment();
for (var i = 1; i <= days; i++) {
var input = document.createElement('input');
input.type = 'text';
input.classList.add('date');
fragment.appendChild(input);
}
return fragment;
}
// 根据年份和月份生成星期几
function createWeekday(year, month) {
var days = getDaysInMonth(year, month);
var fragment = document.createDocumentFragment();
for (var i = 1; i <= days; i++) {
var weekday = new Date(year, month - 1, i).getDay();
var td = document.createElement('td');
td.textContent = '日一二三四五六'[weekday];
fragment.appendChild(td);
}
return fragment;
}
// 根据人员和日期生成单元格
function createCell(name, shift, year, month) {
var td = document.createElement('td');
if (shift) {
// 班次行
var shifts = ['行政班', '生产班', '夜班'];
for (var i = 0; i < 3; i++) {
var checkbox = document.createElement('input');
checkbox.type = 'checkbox';
checkbox.classList.add('checkbox');
td.appendChild(checkbox);
td.appendChild(document.createTextNode(shifts[i]));
td.appendChild(document.createElement('br'));
}
} else {
// 时间和日期行
if (name) {
td.textContent = name;
} else {
td.rowSpan = 5;
td.textContent = '渠际时\n陈海峰\n梁胜玉\n袁凯\n侯博文\n孙逍遥\n郭智豪\n杨沐松';
}
if (year && month) {
if (shift === undefined) {
// 时间行
td.textContent = '行政班';
}
td.appendChild(document.createElement('br'));
td.appendChild(document.createTextNode(year + '年' + month + '月'));
td.appendChild(document.createElement('br'));
td.appendChild(createDateInput(year, month));
td.appendChild(document.createElement('br'));
td.appendChild(createWeekday(year, month));
}
}
return td;
}
// 生成表格内容
for (var i = 0; i < 8; i++) {
var tr = document.createElement('tr');
for (var j = 0; j < 35; j++) {
tr.appendChild(createCell(null, i == 0 ? true : false, year, month));
}
table.tBodies[0].appendChild(tr);
}
// 提交保存按钮
var submitButton = document.getElementById('submit');
submitButton.addEventListener('click', function() {
// 保存表格数据
});
```
在这个代码中,我们首先创建了年份和月份的选择框,并将它们添加到表格中。然后,我们使用`createCell`函数来动态生成表格中的单元格。在这个函数中,我们根据参数来决定单元格的内容和样式。如果`shift`参数不为空,则表示生成班次行,否则表示生成时间和日期行。如果`name`参数不为空,则表示生成人名行的单元格,否则表示生成时间和日期行的单元格。最后,我们使用`createCell`函数来生成表格中的所有单元格,并将它们添加到表格中。
最后,我们在页面底部添加了一个提交保存按钮,并使用事件监听器来处理点击事件。在这个事件处理函数中,我们可以获取表格中的数据,并将它们保存到服务器或本地存储中。
这个实现方案可能还有很多需要改进的地方,比如表格样式、输入校验、数据格式等等。但是,我相信这个代码可以帮助你快速实现你的需求。
阅读全文