当前位置: 首页 > news >正文

网站安全证书过期怎么处理网络推广公司能干嘛

网站安全证书过期怎么处理,网络推广公司能干嘛,如何软件开发,插画素材网站有哪些0) 效果演示 #xff08;代码地址#xff09; CSS Mechanical Keyboard1) 示例与来源 dagger.js 版本#xff1a;本笔围绕 CodePen 上的《CSS Mechanical Keyboard》的 dagger.js 改写版进行解读#xff0c;核心思路是用 dagger 指令把纯 CSS 艺术包装成可复用的组件…0) 效果演示 代码地址 CSS Mechanical Keyboard1) 示例与来源 dagger.js 版本本笔围绕 CodePen 上的《CSS Mechanical Keyboard》的 dagger.js 改写版进行解读核心思路是用 dagger 指令把纯 CSS 艺术包装成可复用的组件并加入键盘事件与音效。原始作品原作由 Yoav Kadosh 创作是一个 纯 CSS 的机械键盘不依赖外部 JS偏重 3D 视觉与阴影层叠技巧。本文对照为便于理解我们提供一个等价的 React 参考实现并非作者官方版本用于对比心智模型、代码结构与工程复杂度。 说明原作侧重 CSS 艺术Dagger 版本在此基础上借助指令系统与模板增强了可组合性和交互按键高亮、键音。 2) dagger.js 代码结构速览 下面片段来自示例的核心结构已做适度压缩与注释便于阅读。 2.1 模块与模板 !-- 声明模块与模板的映射同一 Pen 也可改为外链脚本模块 -- script typedagger/modules {_: #script,key: #template_key,row: #template_row,column: #template_column } /script!-- 业务脚本作为 dagger 模块暴露函数 -- script typedagger/script idscriptexport const load () ({set: new Set(),audio: new Audio(https://assets.codepen.io/5782383/keytype.mp3)});export const keyInit (set, char, span false) ({char, span, active: set.has(char)});export const onKeyDown ($event, set, audio) {set.add($event.key);audio.pause(); audio.currentTime 0; audio.play();}; /script!-- 组件模板Key / Row / Column -- template idtemplate_keydiv classkey *class{ span: $scope.span, active: $scope.set.has(char) }div classside/divdiv classtop/divdiv classchar${ char }/div/div /templatetemplate idtemplate_rowdiv classrowtemplate slot/template/div /templatetemplate idtemplate_columndiv classcolumntemplate slot/template/div /template2.2 页面与交互 div classkeyboarddg-cloakloadkeydown#target:documentonKeyDown($event, set, audio)keyup#target:documentset.delete($event.key)columnrowkey *each[7,8,9] loadkeyInit(set, item)/key/rowrowkey *each[4,5,6] loadkeyInit(set, item)/key/rowrowkey *each[1,2,3] loadkeyInit(set, item)/key/rowrowkey loadkeyInit(set, 0, true)/keykey loadkeyInit(set, .)/key/row/columncolumnkey loadkeyInit(set, , true)/keykey loadkeyInit(set, -, true)/key/columndiv classshade/divdiv classcover/div /div要点解读 load组件/元素装载时初始化作用域返回 { set, audio } 等状态对象。*each把字符数组映射为一组 key 子组件。*class根据 set 中是否包含字符切换 active/span 类名。keydown/keyup#target:document把监听目标直接绑定到 document控制全局按键高亮与删除状态。模板 template slot 让 Row/Column 像容器组件一样承载子节点对标 React 的 children。 3) 交互与状态 按键状态用 Set 存当前被按下的字符keydown 时 addkeyup 时 delete。音效Audio 对象复用每次按键前 pause 并重置 currentTime避免叠音。高亮*class 与 $scope.set.has(char) 实时驱动。 4) 样式与 3D 视觉要点概览 主题色/阴影SCSS 变量如 $color-gray-*、$color-orange-*集中管理。立体感transform: rotateX(...) rotateZ(...)、transform-style: preserve-3d 多层 box-shadow。自定义函数function layered_shadow(...) 构造层叠阴影营造“厚重”的机械感。 视觉仍然由 纯 CSS/SCSS 驱动dagger.js 只负责结构/交互与状态胶合。 5) React 参考实现等价思路 下例演示若用 React 实现同等交互核心包括组件拆分、全局键盘事件、Set 状态与音效复用。代码仅作对照示例。 import React, { useEffect, useMemo, useRef, useState } from react;function useKeyboardAudio(src) {const audioRef useRef(null);useEffect(() { audioRef.current new Audio(src); }, [src]);const play () {const a audioRef.current;if (!a) return;a.pause(); a.currentTime 0; a.play();};return play; }function Key({ char, active }) {return (div className{key ${active ? active : }}div classNameside /div classNametop /div classNamechar{char}/div/div); }function Row({ children }) { return div classNamerow{children}/div; } function Column({ children }){ return div classNamecolumn{children}/div; }export default function Keyboard() {const [down, setDown] useState(() new Set());const play useKeyboardAudio(https://assets.codepen.io/5782383/keytype.mp3);useEffect(() {const onKeyDown (e) {// 采用不可变更新触发重渲染setDown(prev {if (prev.has(e.key)) return prev;const next new Set(prev);next.add(e.key);play();return next;});};const onKeyUp (e) setDown(prev {if (!prev.has(e.key)) return prev;const next new Set(prev);next.delete(e.key);return next;});document.addEventListener(keydown, onKeyDown);document.addEventListener(keyup, onKeyUp);return () {document.removeEventListener(keydown, onKeyDown);document.removeEventListener(keyup, onKeyUp);};}, [play]);const rows useMemo(() [[7,8,9],[4,5,6],[1,2,3],], []);return (div classNamekeyboardColumn{rows.map((arr, i) (Row key{i}{arr.map(c Key key{c} char{c} active{down.has(c)} /)}/Row))}RowKey char0 active{down.has(0)} /Key char. active{down.has(.)} //Row/ColumnColumnKey char active{down.has()} /Key char- active{down.has(-)} //Columndiv classNameshade /div classNamecover //div); }样式SCSS基本可直接复用原作必要时把 *class 的条件改为 React 的类名拼接逻辑。 6) dagger.js vs React对照表 维度dagger.js 实现React 等价实现心智模型声明式指令*each、*class、load、事件 #target:document 模板插槽组件 JSX状态驱动渲染DOM 由虚拟 DOM 协调状态管理直接在作用域返回 { set, audio }Set 原地增删useState / useRef常以不可变更新触发重渲染事件绑定keydown/keyup#target:document 语法内置useEffect 手动绑定/卸载 document 事件模板/组合template slot 容器模式无需打包即可模块化children 组合通常依赖打包或 Babel/JSX运行与构建零构建可运行原生 ESM / Script Type 支持常规项目多用打包链路Vite/webpackCodePen 可临时用 Babel代码体量交互 JS 极少主要重用 CSS 视觉交互样板hooks/不可变更新略多适用场景低门槛改造 CSS 艺术为可复用组件/小交互生态完备、可扩展体系更强适合复杂应用 7) 什么时候选 dagger.js 你已有一份 纯 CSS 艺术/动效想快速加上键盘/鼠标交互与组件化复用希望 零构建 上线静态托管 / Edge 环境并保持极低的引入成本更倾向原生 DOM 与语义化指令不想维护冗长的状态样板。 8) 小结 原作突出 CSS 3D 质感与阴影层叠dagger.js 改写把它“组件化 可交互化”。若用 React实现同等功能也很直接但需要一些 hooks 样板与状态不可变更新的心智模型。 本文内容就到这里后续文章将为大家带来更多案例和讲解。 如果对dagger.js感兴趣的话请您点赞收藏、分享本系列文章也欢迎留言或者私信作者提出问题和建议您的关注是对我最大的支持和鼓励。感谢您的阅读祝工作学习顺利
http://www.pierceye.com/news/164816/

相关文章:

  • 搜狗站长线上营销策划方案
  • goggle营销型网站效果网站建设的种类
  • 建设银行网站注册企业类似返利网的网站建设
  • pc端网站建设碳晶板全屋装修的利和弊
  • 网站开发层次wordpress源码之家
  • 农产品电商网站建设的总体目标阿里云域名注册入口官网
  • 义乌个人兼职做建设网站做网站月收入多少
  • 福州网站seo优化公司徐州百度运营中心
  • 做网站需要用到ps吗中国十大最强装饰公司
  • 网站建设盈利去除wordpress rss图标
  • 网站策划书的基本内容东莞工程建设交易中心网
  • 免费推广网站入口2022静态网站开发外文文献
  • 如何做服装微商城网站建设网站开发设计中的收获
  • 网站开发详细设计文档模板网站建设设计工具
  • 网站建设项目资金申请wordpress主题美容
  • 专门做财经的网站软件开发都有哪些项目
  • 湛江网站制作多少钱建网站程序工具
  • 四川省乐山市建设银行网站一级门户网站建设费用
  • 六安网站制作哪里有网站备案网站
  • 石家庄手机网站建设公司wordpress媒体库难用
  • wordpress上传完了周口seo 网站
  • 广州网站建设技术方案建设宠物网站的目的
  • 邢台网站维护网络营销推广方法及分类
  • 做网站买过域名之后门户网站建设公司报价
  • 广告网站设计公司好吗重庆在线app
  • 深圳网站建设哪家公司便宜网站一般用什么语言做
  • 网站平台建设所需开发工具成都麦卡网络做网站开发怎么样
  • 可以做网站的电脑软件济南网页设计
  • 推广网站制作网站建设代理怎么做
  • 做网站页面遇到的问题网站规划设计的步骤