找到
281
篇与
易航
相关的结果
- 第 4 页
-
使用一行 CSS 去除图像背景 通过一个 CSS 属性,你就能去除任何图像的背景。 这一属性在大多数现代浏览器中都得到了支持。 假设你遇到这样的情况: 你已经完成了一个很棒的布局,完全响应式,效果也如预期。 但有几张图像的背景与网站的背景不匹配,就像下面这张图: 图片 图像的背景颜色与预期的背景色完全不同。 通常,你可能首先想到的是调整设计: 更改背景色,使其与图像的背景色匹配。 但其实不需要这样做…… 在 CSS 中,有一个叫做 mix-blend-mode 的属性,就是在这里发生了“魔法”。 什么是 mix-blend-mode? HTML 不是编程语言,它没有严格的语法和逻辑规则。 你的网站中,图像通常被包含在各自的 div 元素中,每个 div 元素都有自己的背景色,而每个图像也有自己的背景。 那 mix-blend-mode 如何起作用呢? 当你对图像元素应用 mix-blend-mode 属性时,浏览器会开始对比图像和 div 元素的颜色。 例如,如果你设置样式为 mix-blend-mode: darken,浏览器会逐像素地进行颜色对比。 这意味着,在每个位置,浏览器会比较图像和 div 元素的两个像素。 如果设置了 darken,那么较暗的像素会被保留。 图片 举个例子: 假设 div 的背景比图像的背景更暗,那么 div 背景的颜色会被保留,图像的背景颜色则会被“去除”。 如果图像背景的亮度比 div 更高,那么图像的背景就会“消失”,而与 div 的背景混合。 这时,看起来图像的背景好像被去除了,但实际上它只是与 div 的背景融合了。 如何判断哪个颜色更暗? 很简单…… 你可以将这两种颜色转换为 HSL 颜色模型,它包含三个参数: 色调 (Hue) 饱和度 (Saturation) 亮度 (Lightness) 其中,亮度值越高,颜色就越亮。所以,在进行比较时,亮度值较低的颜色会被保留。 图片 通常情况下,产品的颜色会比背景颜色更强烈,也更暗。因此,产品的实际图像保持原样,而图像背景会与 div 背景融合,看起来就像图像的背景已经被去掉了。 浏览器支持 图片 总结: 通过使用 mix-blend-mode 属性,尤其是 darken 模式,你可以轻松去除图像的背景,并让它和网页背景无缝融合。这不仅省去了繁琐的设计修改,还能在不改变图像的前提下,完美匹配网站的设计风格。 这样一来,你就能用一行 CSS 去实现图像背景的去除,效果又简单又直观。
-
鬼月的禁忌很多,一定要注意! 农历七月,是我国民俗传说中的 “鬼月” 。据说每年农历七月初一,便会打开鬼门,放出饿鬼,一直到七月三十日才关上鬼门。为了让阴阳二界的人鬼都平安,我国自古以来,便有在七月设醮普渡的习俗。民间在七月鬼月的第一天、第二天、第十五天和最后一天都要进行拜祭。鬼月的禁忌也很多,如下。 晚上出门不宜呼喊名字。 不穿带自己名字的衣服。 夜晚少去荒郊野外或偏僻的地方。 不拍别人肩膀。 不吹口哨。 不可去危险水域戏水。 不可偷吃祭拜的供品。 不宜玩碟仙、笔仙灵异游戏。 不要随便捡起路边的钱。 路经丧事场所,嘴里及心里不可有不敬的念头或言语。 忌乱踩冥纸或乱烧冥纸。 不要伤害无辜生灵。 夜游时最好不要乱照相。 吃饭时不可以将筷子插在饭碗之上。 走路不宜勾肩搭背。 晚上睡觉鞋头不宜对床。 不宜在床边挂风铃 小孩老人体弱者夜晚不外出
-
道教入门应该读哪些书 《道教基础知识》 《道教常识答问》 《道教神仙信仰》 《道教礼仪》 《道教仪范》 《道经总论》 《太上玄门早晚功课经注释》 《道教小词典》 《道藏索引》 《道藏分类题解》 《道教文化十五讲》 《道教神学概论》 《道藏源流考》 《道教三百题》 《道学通论》 《中国道教史》 《道教法术》 《道教哲学》 如果你现在对道教的了解是 “画符驱鬼林正英” 阶段,那建议看一下《道教知识一百八十问》这种现人书籍即可。 如果你已经对道教派系,基本理念,神学构造有一定了解,可以买一本《道教大辞典》作工具书,然后读一下祖师语录,推荐《海琼白真人语录》,不推荐《崆峒问答》,然后可以看一些学术型书籍,推荐卿希泰《中国道教史》,不推荐任继愈《中国道教史》,但无论哪个,都要把一些内容筛选掉,因为你不是去研究学术的,你是去研究你自己信仰的,最后有一定积累量就可以进行最核心也是最重要的事,深入三洞经教。 最后说一下,远离网络道教小圈子,那不是了解道教必接触的,只会把你信仰带偏,不管你现在有没有 “本土宗教情节” ,没有的话最好,有的话赶紧改,道教以本土为幸事,而不以本土为宗旨,一定要弄明你信仰出发点。 图片
-
告别 <div>:7 种语义化 HTML 标签提升代码质量 在开发 Web 应用时,项目往往从简单开始,但随着需求的增长,文档结构会变得复杂起来。 div 标签虽然灵活,但滥用会导致代码杂乱、难以维护。原因在于 div 是纯粹的容器,没有任何语义意义。 幸好,HTML 提供了语义化标签这一优雅的解决方案。 根据 W3Schools 的定义:语义化元素是带有明确意义的 HTML 元素。它们不仅能让浏览器理解,还能清晰地传达意图给开发者和用户。 图片 为什么要使用语义化标签? 提升可访问性:语义化标签帮助辅助技术(如屏幕阅读器)更好地导航内容。 增强 SEO:搜索引擎能更准确地理解内容结构,提高页面排名。 易维护性和可读性:清晰的代码结构更易阅读和协作。 减少代码冗余:更少的额外类名或属性,代码更简洁。 总之,除非别无选择,尽量少用 <div>。 下面是 7 个可以替代 <div> 的语义化标签及其应用场景。 1. section:组织相关内容 <section> 用于将相关内容分组,就像书中的章节,每个部分围绕特定主题。 示例: <section> <h2>我们的服务</h2> <p>我们提供网站开发、设计和营销等多种服务,助您取得成功。</p> </section>2. article:独立的内容单元 <article> 适合表示独立的内容单元,例如文章、博客或新闻条目。 示例: <article> <h3>早晨锻炼的好处</h3> <p>晨练可以提升能量,改善心情,是开启一天的绝佳方式。</p> </article>3. nav:导航链接 <nav> 用于定义导航区域,就像网站的目录或地图,指引用户浏览站点。 示例: <nav> <ul> <li><a href="#home">首页</a></li> <li><a href="#about">关于我们</a></li> <li><a href="#services">服务</a></li> <li><a href="#contact">联系我们</a></li> </ul> </nav>4. header:头部内容 <header> 用于页面或部分内容的头部区域,通常包括标题和导航。 示例: <header> <h1>我的个人博客</h1> <p>分享世界各地的故事与见解。</p> </header>5. footer:底部内容 <footer> 用于表示页面或部分内容的底部,通常包括版权声明、联系信息等。 示例: <footer> <p>© 2024 我的个人博客。保留所有权利。</p> <a href="#privacy-policy">隐私政策</a> </footer>6. main:主要内容区域 <main> 用于包含网页的主要内容,不包括头部、底部或侧边栏。 示例: <main> <h2>欢迎访问我们的网站</h2> <p>我们为您提供量身定制的解决方案。</p> </main>7. aside:补充内容 <aside> 用于表示与主内容间接相关的信息,例如侧边栏或附加说明。 示例: <aside> <h4>相关文章</h4> <ul> <li><a href="#article1">改善睡眠的 10 个小技巧</a></li> <li><a href="#article2">经济实惠的健康饮食指南</a></li> </ul> </aside>可视化:语义化标签的页面结构 使用语义化标签构建页面时,页面结构会更加清晰。例如: <header>...</header> <nav>...</nav> <main> <section>...</section> <article>...</article> <aside>...</aside> </main> <footer>...</footer>这样不仅方便开发人员理解页面布局,还能让搜索引擎和辅助设备更好地解析内容。 结论 滥用 <div> 会导致代码冗杂且不易维护。通过使用 <section>、<article>、<nav>、<header>、<footer>、<main> 和 <aside> 等语义化标签,你可以创建更清晰、更具可读性和更高效的网页结构。 记住:除非没有合适的语义化标签,否则尽量少用 <div>!
-
您应该了解的新 CSS 功能 这篇文章介绍了现代 CSS 的一些新特性,帮助开发者提升网页开发效率和视觉效果,尤其是在布局、动画、性能优化等方面。随着 Web 开发的不断进化,CSS 不仅仅是一个样式语言,它已经成为了一个强大的工具,可以用来创建复杂的布局、动画和交互效果。图片 @scope 一种新的 CSS 规则,用于为选择器定义作用域,使得开发者可以更轻松地在特定的 DOM 子树内应用样式,而不会影响到外部元素。这对于组件化架构、第三方库和大项目的协作开发尤为有用。 <div id="componentA"> <p>This paragraph is inside the scope.</p> </div> <p>This paragraph is outside the scope.</p> <style> @scope (#componentA) { p { color: green; } } </style>在这个例子中,只有 #componentA 内部的段落文字会变成绿色,而外部的段落不会受到影响。 @supports CSS 的功能检测机制,可以根据浏览器是否支持某个 CSS 属性来有条件地应用样式,保证在不同浏览器环境下都能有良好的回退处理。 @supports (display: grid) { .grid-container > * { text-shadow: 0 0 2px red; float: none; } }只有当浏览器支持 display: grid 时,才会应用内部的样式,避免不支持的环境下出现问题。 content-visibility 这项性能优化特性可以在元素不可见时跳过渲染,提高页面加载和渲染的性能,非常适合长列表、复杂布局和图片重度页面。 .content-section { content-visibility: auto; contain-intrinsic-size: auto 500px; }如果元素不在视口内,浏览器将跳过渲染这些内容,从而加速页面加载。contain-intrinsic-size 为内容提供一个估算的尺寸,避免布局偏移。 aspect-ratio 控制元素的宽高比,确保元素在不同屏幕尺寸和布局条件下保持一致的比例,尤其对于响应式图片和视频非常有用。 img { display: inline; width: 300px; background-color: #f0f0f0; vertical-align: top; aspect-ratio: 16 / 9; }在这个例子中,图片会保持 16:9 的宽高比,确保即使在不同的容器大小下也不会变形。 @keyframes 和 @starting-style @keyframes 用于创建复杂的动画序列,@starting-style 解决了 CSS 过渡和动画的初始状态问题,确保动画平滑开始。 @keyframes slideIn { from { transform: translateX(-100%); opacity: 0; } 50% { opacity: 0.5; } to { transform: translateX(0); opacity: 1; } } .animated-box { animation: slideIn 3s ease-in-out; }这里定义了一个 slideIn 动画,使元素从左侧滑入并逐渐显示。 offset-position 和 offset-path 用于控制元素沿自定义路径运动的位置,这为复杂的路径动画提供了更精确的控制,适合滚动绑定动画、互动效果和自定义光标。 .moving-object { offset-path: path("M 0 0 L 200 200 L 400 0"); offset-position: 25%25%; animation: pathMotion 5s linear infinite; } @keyframes pathMotion { 0% { offset-distance: 0%; } 100% { offset-distance: 100%; } }在这个例子中,元素沿着一个折线路径移动,从而实现精确的动画控制。 image-set() 为不同设备像素密度选择最合适的图片,提升响应式设计的效果,同时优化性能,减少带宽消耗。 .responsive-box { width: 500px; height: 250px; background-repeat: no-repeat; background-size: cover; background-image: image-set( url("image-lowres.jpg") 1x, url("image-highres.jpg") 2x ); }在这个例子中,标准分辨率的设备将加载 image-lowres.jpg,而高分辨率设备(例如 Retina 显示屏)将加载 image-highres.jpg。 @property CSS Houdini API 的一部分,允许开发者定义和约束自定义 CSS 属性,使得这些属性在动画时更加流畅,能够支持设计系统、主题切换和响应式排版。 @property --main-color { syntax: '<color>'; inherits: false; initial-value: #00ff00; } .color-box { background-color: var(--main-color); transition: --main-color 0.5s; } .color-box:hover { --main-color: #ff0000; }这个示例展示了如何创建一个自定义颜色属性,并在鼠标悬停时平滑地过渡到新颜色。 text-wrap 和 white-space-collapse 提供了更细致的文本换行控制,可以优化长文本内容的显示效果,提升可读性,避免页面布局的跳动。 .balanced-text { text-wrap: balance; text-align: justify; } .preserved-space-text { text-wrap: pretty; }balanced-text 类会使段落尽可能均匀分布文本,而 preserved-space-text 类则会优化文本换行,避免出现孤立或寡头字。 结论 这些现代 CSS 特性不仅为开发者提供了更多的灵活性和控制,还能够在提升性能、减少代码冲突、优化用户体验等方面发挥重要作用。通过学习和掌握这些功能,开发者可以创建出更加高效、灵活且视觉上令人惊艳的网页应用。赶快开始尝试这些新特性吧,构建未来感十足的网页!
-
天罡七星步的修炼方法(收藏) 传说此法源于大禹。历史上的黄石老人、张良、诸葛亮等皆精于此法。 相传大禹治水之时,见一小鸟能用嘴推动一块比自己身体大几倍的石头,感到很奇怪,便试着搬比自己大的石头,结果石头纹丝不动。他认为小鸟能推动比自己大的石头,人一定也能。于是他对小鸟进行了耐心细致的观察。他发现小鸟在搬动大石头之前,先要走一种很有规律的步法。这种步法与北斗七星相呼应。于是大禹便模仿小鸟走的这种步法进行训练。一个月以后,他便也能搬动比自己体大的石头,力量比自己想象的还要大得多。 图片 在踏七星步前,要先熟练掌握以下基本步法、基本手法和呼吸方法,并熟记口诀,然后再转入正式修炼。 准备式 修炼者在空旷的场地或草地上,自然松静站立,两手自然下垂,闭目合齿,舌抵上腭。调整自然呼吸,呼吸要求匀、深、细、长,使呼吸形成规律。再调整综合呼吸,即自身宇宙呼吸,人体宇宙呼吸,天体宇宙呼吸和以凡息带真息四种呼吸同时做(也就是吸气过脐下,呼气不出心和收身收体收宇宙,吸气内收,呼气外放等几种呼吸同时做),使气聚下田。随后,默运五行,最后再归?于下田。调整人体宇宙的呼吸,等自身形成一体时,踏步入七星。七星阵如图所示。 图片 基本步法 从 0 位开始,左脚拖地向前趟,左脚落 1 位后,右脚再拖地向前趟到,到 2 位,如此向前走,左脚到 3、5 位,右脚倒 4、6 位,左脚踏到 7 位后,右脚也并到 7 位(两脚稍分开一点,即右脚到 7 位旁的 0 位),此时,转体 180°,左脚反过来再踏一、、三、五位,右脚踏二、四、六位,左脚到七位,右脚也到七位,再转体 180°,继续做,如此循环反复。 基本手法 两手置于胸前,十指尖向上,两掌心相对,两臂向左右两侧展开,同时,两手立掌向外推,推至八成时,两手转掌,掌心相对,开始向中间挤压,到两手快要接触时,两手再转掌,掌心向外推,如此循环。在两手由向里压转成向外分手和由分手转成向里压时,转换动作要干净利落,越快越好。 呼吸 呼气时两手向外分;吸气时两手向内压。 口诀 一炁混沌灌我形,禹步相推登阳明,天回地转履六甲,蹑罡履斗齐九灵,亚指伏妖众邪惊,天神助我潜身去,一切祸殃总不侵。 把所有的动作综合起来,便可开始修炼天罡七星步。 修炼者两脚站立在 0 位,左脚拖地向前趟,两掌开合配呼吸,默念口诀莫忘记:“一炁混沌灌我形”; 左脚踏步入 1 位,右脚拖地向前趟,两掌开合配呼吸,默念口诀莫忘记:“禹步相推登阳明”; 右脚踏步入 2 位,左脚拖地向前趟,两掌开合配呼吸,默念口诀莫忘记:“天回地转履六甲”; 左脚踏步入 3 位,右脚拖地向前趟,两掌开合配呼吸,默念口诀莫忘记:“蹑罡履斗齐九灵”; 右脚踏步入 4 位,左脚续前向右移,两掌开合配呼吸,默念口诀莫忘记:“亚指伏妖众邪惊”; 左脚踏步入 5 位,右脚从后向前趟,两掌开合配呼吸,默念日诀莫忘记:“天神助我潜身去”; 右脚踏步入 6 位,左脚斜上向前趟,两掌开合配呼吸,默念口诀莫忘记:“一切祸殃总不侵”; 左脚踏步入 7 位,右脚拖地到 7 位。转体 180°,照着原样回原位。 如此反复勤修炼,自得其中妙中玄。 收功 回到 0 位后,调整自然呼吸片刻,即可收功。 要求 整个步法,要求神与意合,意与气合。 练天罡七星步的时间是夜间子时,因为子时肾中生?,合于七星修炼,效果最好。其它时间最好别练。 踏在星位上的脚和脚跟不要抬起来,这就要求两腿必须下蹲,下蹲的幅度量力市行。 出步时,脚是拖地往前趟,踏入星位时,是蹭地入位。这里,要注意拖、蹭和趟三个动作的细微变化之处。 呼吸是先呼后吸,先用鼻呼鼻吸,再进一步就用鼻吸口呼。 两掌外掰时呼气,内压时吸气,一定别用反了,否则会出现胸闷,身体不舒服。 要想使人体作为一个整体与七星相联系,踏步时的动作和形态必须做到家,即要做出它的神韵来。要用头、眼、臂、手、身、背、足、脚的动作,来表现出体、行、动、外、内。用形象化来比喻,就是: 手如雁:手要像大雁一样飘然悠闲,掌要挺直,腕要灵活。 臂如鹰:两臂像鹰翅一样,总不全展开,展开了就不好看了,也没有力量,胳膊不是很硬; 身如虎:虎在还没有走的时候,先出去的是头,炼时脚未动,头先出去就对了; 背如熊:得做出熊浑厚、稳重的那个形象; 脚如鸵鸟:脚像鸵鸟一样在地下趟着走; 足如鹤:足吊起来就像鹤一样; 头如豹:像豹的头总是在动; 眼如猿:像猿的眼睛总是在来回动; 行如风:走的时候像风在推一样; 体如白云:体态如白云那样轻盈飘逸; 外形如雾:外形收展得像雾状; 内如坚钢:把外形收回来,内里有一股刚劲。做功时,可以踢一踢炼功者的腿,看看刚劲如何; 动如雨:行动时各个部分都有转角,有转角的部分转化要快。 解释 口诀的含义 六甲:就是天干和地支相配出现了 6 组甲子,又称六丁六甲。走到这一步,六甲盖头,外邪不入。走一步可以唤出一个甲子。 九灵:即九种仙气。 蹑罡:也就是粘,即人体的前后左右都粘住了,始终不离这个场,这个场也始终不大不小。 履斗:实际就是踏,用步法去踏。 登阳明:七星,属水,属阴,要夺它的阴中之阳。走七星步时,人是阳性的,七星是阴性的,人入星内,阳入其中,而阴在外。走好了,人的手指、掌和两臂会发麻,这是因为外阴内阳。 一炁混沌灌我形:是唤七星本身之气进入人的本体之内。 亚指:就是手指向上。手法比较多,在此五指向上,古称四位归一。实际就是五合,把自己体内的五行之?合于指掌之中。 天神:走七星时,由于有物质和能量的生化和交换,在身体周围会发出声响。因古人不知道是什么东西,故求天神助我之力。 说明 神经有毛病的人及自己控制不了自己的人,不能做七星步。有慢性病的人做,治病效果好,尤其冠心病、糖尿病效果最好。 天罡七星步还有一种走法,与上述方法唯一不同的地方是:配合呼吸踏步时,两臂在向两侧平展的同时,上下煽动,掌心始终向下。两手向上提时吸气,向下压时呼气。这样,可以炼就手掌住上走的劲和发出一种带有弹性的力量。 有几种现象,一定要注意 1.在走七星步时,如果觉得有人接近时,动作会自动变得特别慢,甚至停下来,人一离开,慢慢加快。炼此功时,不容易做到神意气相合,也不容易魂魄归一相伴在自身宇宙之中,原因是外界有东西来,人就易分神。修炼时,也要注意前后左右的变化。 2.修炼者步法走得很熟,口诀也记熟了,但在走的过程中,突然有一天走到半道就想不起来了,这时,一定要记住这个星的名字,这是什么星,这可是奥秘,千万千万把它记下来。 3.手掌立起,做好了拇指不发麻,其余四指会发麻,还会顺内侧上升,到身体发麻最好。 4.炼七星到一定程度,会自动发出一种声音,这时最好先别发出来,在内里含着。在踏八卦步前;要先熟练掌握以下基本步法,基本手法和呼吸方法,并熟口诀,然后,再转入正式修炼。 基本步法 两脚站立于中宫,身体下蹲,左脚直线向前趟,踏入乾卦; 右脚弧线向左趟踏入兑卦,左脚直线向前趟,踏入离卦; 右脚弧线向左趟踏入震卦,左脚直线向前趟,踏入中宫; 右脚直线向左趟踏入巽卦,左脚弧线向右趟,踏入坎卦; 右脚直线向右趟踏入艮卦,左脚弧线向前趟,踏入坤卦; 右脚直线向前趟踏入中宫,如此一直反复。 基本手法、基本呼吸都与天罡七星步相同。 口诀 1.阴阳八卦扶弟子,阴阳八卦扶吾身; 2.乾元亨利贞; 3.兑泽英雄兵; 4.离火驾火轮; 5.震雷霹雳声; 6.阴阳八卦扶弟子,阴阳八卦扶吾身; 7.巽风进退利; 8.坎水多波急; 9.艮山不出其; 10.坤德合无疆; 11.阴阳八卦扶弟子,阴阳八卦扶吾身。 准备式:同天罡七星步。 动作 双脚踏入中宫,默念口诀:“阴阳八卦扶弟子,阴阳八卦扶吾身”; 左脚直线向前趟,两掌开合配合呼吸,默念口诀:“乾元亨利贞”; 左脚踏步入乾卦,右脚弧线向左趟;两掌开合配合呼吸,默念口诀:“兑泽英雄兵”; 右脚踏步入兑卦,左脚直线向前趟;两掌开合配合呼吸,默念口诀:“离火驾火轮”; 左脚踏步入离卦,右脚弧线向左趟;两掌开合配合呼吸,默念口诀:“震雷霹雳声”;” 右脚踏步入震卦,左脚直线向前趟;两掌开合配合呼吸,默念口诀:“阴阳八卦扶弟子,阴阳八卦扶吾身”; 左脚踏步入中宫,右脚直线向前趟;两掌开合配合呼吸,默念口诀;“巽风进退利”; 右脚踏步入巽卦,左脚弧线向右趟;两掌开合配合呼吸,默念口诀:“坎水多波急”; 左脚踏步入坎卦,右脚直线向前趟;两掌开合配呼吸,默念口诀:“艮山不出其”; 右脚踏步入艮卦,左脚弧线向右趟;两掌开合配合呼吸,默念口诀:“坤德合无疆”; 左脚踏步入坤卦,右脚直线向前趟;两掌开合配合呼吸,默念口诀:“阴阳八卦扶弟子,阴阳八卦扶吾身”; 如此回圈勤修炼,自得其中妙中玄。 收功 最后回到中宫,调整成自然呼吸。片刻,即可收功。 要求 1.整个过程要求,在内神与意合,意与气合;在外足与身合,手与体合;做到内外相合,上下相合,混然一体,奥妙其中。 2.修炼天罡八卦步的时间是在早晨和晚上,中午不能修炼。 3.不管发生什么事,这一圈一定要走完,最后步入中宫,口诀念完后,方可出中宫。 4.走步法时,按自己的步法把握好,别把九宫图画得太小了,显得太小气,没有魄力。因为步法越走越小,最后就转出来了。 解释 1.先天八卦图在天和在地是相合的。人在天地之间,所走的图也是和天地相合的。但在头顶上方的天上的图和脚下所踏的地面上的图,其方向是相反的,这个意念构思一定要做到。 2.人在卦位上走动,是人在变卦,天地之图的卦位并没有变。要把握好这个相互关系。 3.刚开始从中宫出来时,先出左脚就往左转,先出右脚就往右转。往左转为正转,往右转为反转。正反转都可以,但反应在人体内的变化不一样,其目的也不一样。这张八卦图是可以变化的。 4.八卦九宫图形是方形,但踏天罡八卦步时,实际走出来的是 8 字形,是一个交叉的阴阳八卦线。如果走得好,修炼者在内里为地方,而外因则为天圆。由此出现了天圆地方。 5.此法为女修女丹功,男修三仙功时修炼身外身的第一法。没有修炼过天罡八卦步,就绝不会出现身外身。在修炼过程中,如果有外来的东西相斗,一定要记住走九宫时以不出官为好。九宫阳遁之法就是不出宫,永远都在九宫中。 6.会八方仁德而为己,会八方仁德而为他。 天罡八卦步可以为己用,也可以为他用,口诀略有不同。上面介绍的是为己用的方法。(更多内容,请关注易航博客)
-
深入浅析 JavaScript 节流函数的四种实现方式(Throttle) 深入浅析 本文将详细探讨 JavaScript 中的节流函数(Throttle),并提供四种不同实现方式的代码示例及详细解释。 节流函数用于限制函数在一定时间内执行的次数,防止函数被频繁调用导致性能问题。这在处理高频事件(例如滚动事件、鼠标移动事件等)时非常有用。 想象一下沙漏:沙子不断流入,但流出的沙子数量有限。节流函数的工作原理类似,它控制函数执行的频率,避免函数被瞬间大量调用。 图片 节流函数的典型应用场景包括: 鼠标点击事件: 防止用户快速连续点击导致多次执行同一操作。 滚动事件: 在页面滚动时,节流可以限制加载更多内容的请求频率,避免频繁请求造成服务器压力。 输入框监听: 限制搜索或自动完成请求的频率,优化用户体验。 节流与防抖的差异 在之前的文章中,我们介绍了防抖函数(Debounce)。节流与防抖虽然都能降低函数执行频率,但它们的工作机制有所不同: 节流: 在规定时间间隔内,无论事件触发多少次,函数最多只执行一次。 时间间隔主要指两次函数执行之间的时间差。 防抖: 在事件停止触发后的一个规定时间内,函数只执行一次。 时间间隔则指连续触发事件的持续时间。 四种节流函数实现方式 我们将分别介绍四种常见的节流函数实现:时间戳版、定时器版、组合版以及高级自定义版。 1. 时间戳版节流 这种方法通过记录上一次函数执行的时间戳来判断是否需要执行函数。它能保证函数在规定时间间隔后立即执行。 const throttle = (func, wait) => { // 初始化事件开始的时间为0 let preTime = 0; return function() { // 下面两行不懂的可以看看防抖实现的那篇文章 let context = this; let args = arguments; // 获取当前的时间,使用+来转化为数字类型,方便后面做减法 let now = +new Date(); // 当前时间减去之前的时间,结果大于设定的间隔时间才会执行函数 if (now - preTime > wait) { func.apply(context, args); preTime = now; } } };2. 定时器版节流 该方法利用setTimeout来控制函数的执行。 函数不会立即执行,而是在规定时间间隔后执行。通常用于在事件停止触发后执行一次操作。 const throttle2 = (func, wait) => { let timeout; return function() { let context = this; let args = arguments; // 若没有定时器,说明上一次设定的定时器已到时销毁 if (!timeout) { timeout = setTimeout(function() { func.apply(context, args); timeout = null; }, wait) } } };3. 组合版节流 结合时间戳版和定时器版,可以实现更灵活的节流:既可以在时间间隔到期时立即执行,又可以在事件停止触发后执行一次。 function throttle3(func, wait){ let context, args, timeout; let pretime = 0; let later = function(){ pretime = +new Date(); timeout = null; func.apply(context, args); }; let throttled = function(){ context = this; args = arguments; var now = +new Date(); var remaining = wait - (now - pretime); // 剩余时间为负数表示下一次执行需要立即执行 // remaining > wait在修改了系统时间的情况下可能发生 if(remaining <= 0 || remaining > wait){ // 如果有设置过定时器,清空并置为null if(timeout){ clearTimeout(timeout) timeout = null; } pretime = now; func.apply(context,args); }else if(!timeout){ // 需要在剩余时间后执行 timeout = setTimeout(later,remaining); } }; return throttled; };4. 高级自定义版节流 此版本允许通过配置参数 options 来控制函数的执行时机,更加灵活: leading: false:禁用首次执行。 trailing: false:禁用最后一次执行。 /** * 高级自定义节流函数,限制函数在指定时间段内最多执行一次。 * * @param {Function} func - 要节流的函数。 * @param {number} wait - 节流时间间隔(毫秒)。 * @param {object} [options] - 可选参数。 * @param {boolean} [options.leading=true] - 是否允许在节流时间段开始时立即执行函数。 * @param {boolean} [options.trailing=true] - 是否允许在节流时间段结束时执行函数。 * @returns {Function} 节流后的函数。该函数包含一个 `cancel` 方法用于取消任何待定的执行。 */ function throttle(func, wait, options) { var timeout, context, args, result; var previous = 0; if (!options) options = {}; const later = function () { previous = options.leading === false ? 0 : now(); timeout = null; result = func.apply(context, args); if (!timeout) context = args = null; }; const throttled = function () { var _now = now(); if (!previous && options.leading === false) previous = _now; var remaining = wait - (_now - previous); context = this; args = arguments; if (remaining <= 0 || remaining > wait) { if (timeout) { clearTimeout(timeout); timeout = null; } previous = _now; result = func.apply(context, args); if (!timeout) context = args = null; } else if (!timeout && options.trailing !== false) { timeout = setTimeout(later, remaining); } return result; }; throttled.cancel = function () { clearTimeout(timeout); previous = 0; timeout = context = args = null; }; return throttled; }这个版本还包含cancel方法,用于取消任何待定的执行。 总结 本文详细介绍了四种 JavaScript 节流函数的实现方式,从简单的计时器方法到更高级的自定义版本,满足不同的应用场景。 选择合适的节流函数实现方式,能够有效提高程序性能,优化用户体验。 建议根据实际需求选择合适的实现方式。 高级自定义版本与流行的库(如 underscore)中的节流函数实现类似。
-
给旧手机装个 Linux 后,还能装个啥?比如装一个宝塔面板? 上面讲的是如果安装一个 linux 系统到手机上,图形化使用。这就开始讲讲最简单的方式来配置 linux 服务器吧!安装AidLux。这个直接在应用商店下载就好了,打开后不用登录直接免登录使用,然后我们点击cloud_ip,打开它,会显示一个网址,在电脑上输入这个网址,就可以远程访问了,直接电脑操作,方便多了! 图片 图片 图片 图片 电脑打开后就是这样子了! 图片 这个时候,我们就可以把他当作一个正常的服务器来使用了! 比如说,我们先安装一个宝塔软件吧! apt update apt upgrade sudo curl -sSO https://download.bt.cn/install/install_panel.sh;sudo bash install_panel.sh chmod a+x install_panel.sh chmod -R 777 /www ./install_panel.sh chmod 777 /www/server -R以上的步骤就是按照宝塔的命令了。最后可能会说启动失败,没关系,接下来继续操作! 图片 输入以下命令: sudo bt ` 就可以看到以下的界面,然后选择 1 就可以启动了。这里建议后面再选择 6 和 5 修改用户名以及密码。  最后选择 14,查看宝塔面板的默认信息,也就是登录网址,账号密码啥的。  然后在浏览器打开这个网址,输入用户名密码就可以啦!  有了宝塔面板就方便多了,很多东西都方便安装了!
-
PHP 的现代复兴:FrankenPHP 如何重塑 PHP PHP 在编程界一直备受争议,开发者对其褒贬不一,常被认为过时、缓慢且笨重。 然而,PHP 真如其名声所言般不堪吗?在现代 Web 开发领域,它是否还有潜力? 答案是肯定的,这得益于像 FrankenPHP 这样的创新。本文将探讨 PHP 发展滞后的原因,分析其为何仍具价值,并阐述 FrankenPHP 如何为 PHP 带来急需的现代化变革。 图片 PHP 被认为过时的原因 1、历史遗留问题和不良实践 PHP 早期缺乏规范,导致大量“意大利面条式代码”出现,造成混乱且难以维护的印象。尽管 Laravel 和 Symfony 等现代框架已显著改善此问题,但负面影响仍然存在。 2、性能瓶颈 PHP 传统的执行模式为每次请求都需重新引导整个应用程序,这种机制导致执行效率低下,尤其与 Go 或 Node.js 等语言相比,显得较为缓慢。 3、现代替代语言的兴起 Python、Ruby 和 JavaScript (Node.js) 等语言凭借其现代语法、强大的生态和更优的性能,获得了广泛关注。 相比之下,PHP 的老旧形象难以改变。 4、无共享架构的局限性 PHP 的无共享架构虽然具备隔离性,但也造成了重复初始化等效率问题。每个请求都需要从头开始,这对于初始化开销较大的应用来说,会降低整体性能。 现代 PHP 复兴 尽管面临诸多挑战,PHP 仍在持续发展。PHP 7 和 PHP 8 的发布带来了显著的性能提升、即时 (JIT) 编译等现代特性,以及更强的类型安全性。 Laravel 和 Symfony 等框架的出现,也极大地提升了 PHP 开发的效率和体验。 然而,真正的变革力量来自于 FrankenPHP。 FrankenPHP:PHP 的现代化革新 FrankenPHP 并非简单的 PHP 服务器,而是一款用 Go 编写的革命性应用服务器,它引领 PHP 步入现代 Web 开发时代。 其核心优势如下: 1、现代化的用户体验 FrankenPHP 拥有精美的界面设计,清晰展示其价值主张,并提供简洁的示例代码,使开发者能够快速上手。 它融合了 PHP 的简洁性和 Go 的现代美学,赋予了 PHP 新的活力。 2、媲美现代语言的性能 FrankenPHP 通过工作模式将 PHP 应用驻留在内存中,消除了每次请求都需重新引导的开销,性能较传统 PHP-FPM 提升高达 3 倍,可与 Node.js 和 Go 等现代语言相媲美。 3、简化的部署流程 FrankenPHP 将 PHP 应用打包成单一、无依赖的二进制文件,无需复杂的容器设置,极大地简化了部署过程,并降低了部署开销。 4、与现代框架的无缝兼容 FrankenPHP 与 Laravel、Symfony 乃至 WordPress 等主流 PHP 框架完全兼容,并支持 PSR-7 和 HttpFoundation,确保了与现代应用和旧代码的兼容性。对于 Laravel 用户,它还与 Laravel Octane 无缝集成,可进一步提升性能。 5、面向未来的技术架构 FrankenPHP 具备 HTTP/3 支持、内置缓存和 TLS 自动化等前沿特性,充分满足现代 Web 开发的需求。 活跃的社区和快速响应的开发团队,确保了 FrankenPHP 的持续发展和改进。 PHP 依然重要的原因 1、广泛的应用基础 PHP 为全球 78% 的网站提供支持,包括 WordPress、Facebook (历史) 和 Wikipedia 等大型平台,其普及性使其成为开发者必备的技能。 2、易于上手 PHP 以其简单易用的特性著称,是初学者和快速原型开发的理想选择。 借助现代框架和工具,它同样适用于构建大型复杂应用。 3、强大的社区与生态系统 PHP 拥有庞大活跃的社区,以及丰富的库、框架和工具生态系统,能够满足从小型博客到大型电商网站及复杂 API 的各种开发需求。 4、持续的改进与创新 PHP 不断发展,定期更新并引入新特性。 PHP 8 中引入 JIT 编译技术,充分体现了该语言对性能和现代化的追求。 FrankenPHP:赋能 PHP 的未来 FrankenPHP 不仅是一个工具,更是一种宣告,它有力地证明了 PHP 在现代 Web 开发领域依然保持着现代性、高效性以及强大的生命力。 通过融合 Go 的强大性能与 PHP 的灵活性,FrankenPHP 为 PHP 应用程序的运行提供了一种革命性的方案。 无论您是经验丰富的 PHP 开发者,还是刚刚踏入 PHP 世界的新手,都值得深入探索 FrankenPHP 的潜力。 结论 PHP 过时和缓慢的固有观念已经过时。 现代框架、性能优化以及 FrankenPHP 等创新技术的出现,使得 PHP 比以往更具竞争力。 现在是时候重新审视 PHP,并将其纳入您的现代开发流程中,发掘它的新潜力。