<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_44280408的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_44280408</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_44280408]]></copyright><item><title><![CDATA[shell | 判断输入是否包含标点符号]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/124104084</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/124104084</guid><author>qq_44280408</author><pubDate>Mon, 11 Apr 2022 17:15:21 +0800</pubDate><description><![CDATA[#!/bin/bash
#判断输入的字串是否包含标点符号
#包含标点符号返回0，不包含返回1
isIncludePunct(){
#输入的第一个参数位$1
#sed是流编辑器，s是sed的替换命令，替换源[^[:alnum:]]，使用了正则表达式，代表除大小写字母和0-9数字之后取反，也就是除了大小写字符和数字之外的字符，替换目标为空，/g表示s标志结束
#实质就是将输入的字串的标点符号字串去掉了
newInput="$(echo $1 | sed 's/[^[:alnum:]]//g')"
#判断替换之后]]></description><category></category></item><item><title><![CDATA[javascript | 登录框拖拽]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/123802475</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/123802475</guid><author>qq_44280408</author><pubDate>Mon, 28 Mar 2022 18:35:47 +0800</pubDate><description><![CDATA[效果：

代码：
&lt;!DOCTYPE html&gt;
&lt;html&gt;

&lt;head lang="en"&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;&lt;/title&gt;
    &lt;style&gt;
        .login-header {
            width: 100%;
            text-align: center;
            height: 30px]]></description><category></category></item><item><title><![CDATA[javascript | 登陆form数据传递]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/123644186</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/123644186</guid><author>qq_44280408</author><pubDate>Mon, 21 Mar 2022 19:54:20 +0800</pubDate><description><![CDATA[效果：


login代码：
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;

&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="ie=edge"&gt;
    ]]></description><category></category></item><item><title><![CDATA[javascript | 验证码倒计时]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/123509666</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/123509666</guid><author>qq_44280408</author><pubDate>Tue, 15 Mar 2022 19:07:39 +0800</pubDate><description><![CDATA[效果：
代码：
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;

&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="ie=edge"&gt;
    &lt;tit]]></description><category></category></item><item><title><![CDATA[javascript | 京东倒计时]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/123508334</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/123508334</guid><author>qq_44280408</author><pubDate>Tue, 15 Mar 2022 17:55:29 +0800</pubDate><description><![CDATA[效果：

思路：
先执行一次countDown的原因是网页刷新的时候，setInterval会等待一秒才执行callback函数，还没执行函数之前就会显示出写si的123数字，所以先执行一次countDown函数，用于在刷新网页的时候不会看到写si的数字。
代码：
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta http-equiv="X-UA-Co]]></description><category></category></item><item><title><![CDATA[javascript | 京东按键获取焦点输入内容]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/123372848</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/123372848</guid><author>qq_44280408</author><pubDate>Wed, 09 Mar 2022 11:18:15 +0800</pubDate><description><![CDATA[效果：按键s，文本框获得焦点，不需要将光标定位到文本框再获得焦点输入内容。
思路：为document添加onKeyUp事件监听，利用键盘事件对象的keyCode属性，获取用户点击的是哪一个按键，如果是S，那么为输入框获取焦点。
为什么是使用keyup，而不是keydown，因为keydown长按会一直触发，为了避免在输入框中输入s，所以使用keyup。
代码：
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;

&lt;head&gt;
    &lt;meta ch]]></description><category></category></item><item><title><![CDATA[javascript | 跟随鼠标的天使]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/123350367</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/123350367</guid><author>qq_44280408</author><pubDate>Tue, 08 Mar 2022 12:11:36 +0800</pubDate><description><![CDATA[效果：鼠标移动，图片就跟着移动。
思路：
给document注册鼠标移动事件，利用事件对象回去鼠标的相对于文档的x坐标和y坐标，x坐标是图片的left，y坐标是图片的top。
代码:
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;

&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=]]></description><category></category></item><item><title><![CDATA[javasript |动态创建表格]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/123225951</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/123225951</guid><author>qq_44280408</author><pubDate>Wed, 02 Mar 2022 11:27:59 +0800</pubDate><description><![CDATA[效果：
思路：数据是由事先创建的数组中获取的，只有表格头是写定的。从数组中获取数据，根据数据的多少动态创建表格，数组中有多少个对象，就创建多少个tr（行），循环遍历每个对象中的属性，用于创建行中的td，并将td中的内容写入，遍历完对象的每个属性之后，再创建一个td，td里面创建一个a，用于点击删除tr。点击删除的实现是循环遍历每个a，给每个a注册点击事件。
代码：
&lt;html lang="en"&gt;

&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
  ]]></description><category></category></item><item><title><![CDATA[javasript | 下拉菜单]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/123211176</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/123211176</guid><author>qq_44280408</author><pubDate>Tue, 01 Mar 2022 17:34:44 +0800</pubDate><description><![CDATA[效果：

思路：比较复杂的是样式的编写，首先是ul里面含有3个li，每个li里面含有一个a和一个ul，ul里面再含有3个li，li里面再有一个a。当鼠标经过第一层ul里面的li时，第二层ul显示。当鼠标移出时，第二层ul不显示。
代码：
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;

&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=d]]></description><category></category></item><item><title><![CDATA[javasript | tab切换]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/123138869</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/123138869</guid><author>qq_44280408</author><pubDate>Fri, 25 Feb 2022 18:26:33 +0800</pubDate><description><![CDATA[效果：点击tab显示不一样的内容
代码：
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;

&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="ie=edge"&gt]]></description><category></category></item><item><title><![CDATA[javasript |全选和取消全选]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/123135532</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/123135532</guid><author>qq_44280408</author><pubDate>Fri, 25 Feb 2022 16:20:35 +0800</pubDate><description><![CDATA[效果：

思路：
1，标题列的checkbox设置点击事件，获取checked属性，下面的几个checkbox遍历设置跟标题列checkbox一样的属性。
2，for循环为body的几个checkbox设置点击事件，每点击一次就遍历几个checkbox的checked属性，如果有一个为false，标题列的checkbox置为false，如果几个checkbox都为true，标题列的checkbox才指为true。
代码：
&lt;!DOCTYPE html&gt;
&lt;html&gt;

&lt;hea]]></description><category></category></item><item><title><![CDATA[javasript | 鼠标经过表格行变色]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/123126050</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/123126050</guid><author>qq_44280408</author><pubDate>Fri, 25 Feb 2022 14:46:35 +0800</pubDate><description><![CDATA[效果：鼠标浮动在哪行，哪行就变色
思路：一个table，table里面有thead和tbody，thead里面tr表示一行，th表示一格；tbody里面tr表示一行，td表示一格。
代码：
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
    &l]]></description><category></category></item><item><title><![CDATA[javasript |仿百度换肤效果]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/123116908</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/123116908</guid><author>qq_44280408</author><pubDate>Fri, 25 Feb 2022 08:57:47 +0800</pubDate><description><![CDATA[效果：点击图片，背景跟着更换。

思路：
一个ul，里面有4个li，让li横着排列的关键是设置li的float属性为left。让ul居中的关键是为ul设置宽度，否则默认为父容器的宽度，然后设置margin=100px auto实现水平居中的效果。
代码：
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta http-equiv="X-UA-Compati]]></description><category></category></item><item><title><![CDATA[javasript | 密码格式验证]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/123111234</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/123111234</guid><author>qq_44280408</author><pubDate>Thu, 24 Feb 2022 16:13:52 +0800</pubDate><description><![CDATA[效果：

思路：一个div里面含有一个input和一个p。
div用于将整个组件放在中间，放在中间的关键是margin= 100px auto；意思是上下100px，左右平分，这样就实现水平居中。
input用于输入密码，当input失去焦点的时候判断value的长度，如果小于6大于16就改变p的背景，显示错误字样和红色；如果在6-16显示正确字样。
p用于显示图标和文字，图标实际是p的背景图片+no repeat.将p显示在input的右边的关键是将p的diplay属性改为inline-block。
行内]]></description><category></category></item><item><title><![CDATA[javasript |循环精灵图]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/123095175</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/123095175</guid><author>qq_44280408</author><pubDate>Wed, 23 Feb 2022 17:28:45 +0800</pubDate><description><![CDATA[效果：
思路：
使用ul+li 无序列表进行排列，将每个li排成3行4列的关键点是使用float属性，将每个li左浮动。循环设置每个li的背景图起始位置，那么每个li显示的背景就不一样啦。
代码：
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
  ]]></description><category></category></item><item><title><![CDATA[javasript | 关闭广告]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/123073456</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/123073456</guid><author>qq_44280408</author><pubDate>Tue, 22 Feb 2022 17:34:27 +0800</pubDate><description><![CDATA[效果：
代码:
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;titl]]></description><category></category></item><item><title><![CDATA[javascript | 密码框明暗文变化]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/123071996</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/123071996</guid><author>qq_44280408</author><pubDate>Tue, 22 Feb 2022 16:46:32 +0800</pubDate><description><![CDATA[效果：

代码：
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;tit]]></description><category></category></item><item><title><![CDATA[kotlin黑马 | 图片处理]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/118500430</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/118500430</guid><author>qq_44280408</author><pubDate>Mon, 05 Jul 2021 22:44:10 +0800</pubDate><description><![CDATA[使用kotlin生成指定大小，颜色的图片：
import java.awt.Image
import java.awt.image.BufferedImage
import java.io.File
import javax.imageio.ImageIO

fun main(args: Array&lt;String&gt;) {
 var image=  BufferedImage (100,100,BufferedImage.TYPE_3BYTE_BGR);//在电脑内存里图片缓冲区的图像，参数分别是]]></description><category></category></item><item><title><![CDATA[githubAPI接口调用]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/113915512</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/113915512</guid><author>qq_44280408</author><pubDate>Sun, 21 Feb 2021 11:18:55 +0800</pubDate><description><![CDATA[一篇文章搞定Github API 调用 (v3）

]]></description><category></category></item><item><title><![CDATA[flutter中widget，element和renderObject源码解析]]></title><link>https://blog.youkuaiyun.com/qq_44280408/article/details/112603540</link><guid>https://blog.youkuaiyun.com/qq_44280408/article/details/112603540</guid><author>qq_44280408</author><pubDate>Thu, 14 Jan 2021 11:40:38 +0800</pubDate><description><![CDATA[Flutter渲染之Widget、Element 和 RenderObject

]]></description><category></category></item></channel></rss>