この記事では、JavaScript に関する関連知識をお届けします。主に、簡単な CSS と JS を使用して初心者指導効果を実現する方法を紹介します。興味のある友人は以下を参照してください。皆さんのお役に立てれば幸いです。
ナンセンスの始まり: 初心者指導効果を達成するための簡単な CSS と JS を通して
# 1. 効果を実現するには
# 2. 実現するには
#実装は実際には非常に簡単です。mask このバージョンでは、画面全体 div をタイル表示し、背景色を透明 transparent に設定し、outline を半透明に設定します。次に、同様に arrow と warning ラベルを作成します。
1. 使用法
let maskIntroduceManage = new MaskIntroduceManage([ new MaskIntroduceItem('one','人生若只如初见'), new MaskIntroduceItem('two','何事秋风悲画扇'), new MaskIntroduceItem('five','等闲却变故人心'), new MaskIntroduceItem('six','骊山语罢清宵半'), new MaskIntroduceItem('four','却道故人心易变'), new MaskIntroduceItem('finally','谢谢大家支持!') ]) maskIntroduceManage.benginIntroduce()
2. HTML
nbsp;html> <meta> <style> *{ padding: 0; margin: 0; } .content { padding: 0; display: flex; flex-direction: row; justify-content: space-between; align-items: center; width: 100%; } span { width: 60px; height: 60px; line-height: 60px; margin-left: 40px; margin-top: 140px; margin-bottom: 0px; text-align: center; display: block; background-color: antiquewhite; } .finally { width: 100px; height: 100px; background-color: cornsilk; border-radius: 50%; line-height: 100px; text-align: center; margin-top: 30px; margin-left: auto; margin-right: auto; } span:nth-of-type(1){ margin-top: 30px; } span:nth-of-type(2){ margin-top: 70px; } span:nth-of-type(3){ margin-top: 160px; } span:nth-of-type(4){ margin-top: 160px; } span:nth-of-type(5){ margin-top: 70px; } span:nth-of-type(6){ margin-top: 30px; } </style> <div> <span>纳</span> <span>兰</span> <span>容</span> <span>若</span> <span>作</span> <span>词</span> </div> <div> 谢谢 </div> <script></script> <script> let maskIntroduceManage = new MaskIntroduceManage([ new MaskIntroduceItem('one','人生若只如初见'), new MaskIntroduceItem('two','何事秋风悲画扇'), new MaskIntroduceItem('five','等闲却变故人心'), new MaskIntroduceItem('six','骊山语罢清宵半'), new MaskIntroduceItem('four','却道故人心易变'), new MaskIntroduceItem('finally','谢谢大家支持!') ]) maskIntroduceManage.benginIntroduce() </script>
3.JS
// 单元信息model class MaskIntroduceItem { // 需要引导的dom的ID id // 需要引导的dom功能描述 warming constructor(id,warming){ this.id = id this.warming = warming } } // 遮罩操作类 class MaskIntroduceManage { // 消息展示类集合 maskIntroduceItems // 遮罩层 el // 遮罩层提示框 warmingEl // 指引肩头 guidanceEl // 展示的第几个 currentShowIndex = 0 // 记录window事件 windowEvent = null constructor(maskIntroduceItems){ this.maskIntroduceItems = maskIntroduceItems } // 添加消息展示类 addIntroduceItem(introduceItem){ this.maskIntroduceItems.push(introduceItem) } // body增加遮罩 addMaskToBody(){ //添加遮罩框 this.el = document.createElement('div') this.el.style.cssText = 'position: fixed;background: transparent;outline:rgba(0, 0, 0, 0.5) 3500px solid;' let body = document.getElementsByTagName('body')[0] body.appendChild(this.el) //添加提示框 this.warmingEl = document.createElement('div') this.warmingEl.style.cssText = 'position:fixed;width:100px;background:white;border-radius: 10px;padding: 30px;font-size: 14px;' body.appendChild(this.warmingEl) //添加指引箭头 this.guidanceEl = document.createElement('div') this.guidanceEl.style.cssText = 'position:fixed;width: 14px; height: 13px; background-color: white;clip-path: polygon(50% 0,100% 100%,0 100%);' body.appendChild(this.guidanceEl) //设置body禁止滚动 body.style.overflow = 'hidden' //保留window事件 if(window.onclick){ this.windowEvent = window.onclick } window.onclick = ()=>{ this.nextIntroduce() } } // 开始引导 benginIntroduce(){ this.addMaskToBody() this.nextIntroduce() } // 下一步 nextIntroduce(){ let maskIntroduceItem = this.maskIntroduceItems.length > 0 ? this.maskIntroduceItems[this.currentShowIndex] : null if(!maskIntroduceItem){ return } let needIntroduceEl = document.getElementById(maskIntroduceItem.id) //遮罩层的镂空位置 this.el.style.width = needIntroduceEl.offsetWidth + 'px' this.el.style.height = needIntroduceEl.offsetHeight + 'px' this.el.style.top = this.getElementPosition(needIntroduceEl).top + 'px' this.el.style.left = this.getElementPosition(needIntroduceEl).left + 'px' //设置对应倒角,但是由于背景颜色是透明的,所以,没有效果(???) //this.el.style.borderRadius = window.getComputedStyle(needIntroduceEl,null)['border-radius'] this.currentShowIndex ++ //指引箭头位置 let guidanceElLeft = this.getElementPosition(needIntroduceEl).left + needIntroduceEl.offsetWidth / 2.0 this.guidanceEl.style.top = this.getElementPosition(needIntroduceEl).top + needIntroduceEl.offsetHeight + 20 + 'px' this.guidanceEl.style.left = guidanceElLeft + 'px' //提示框的位置 this.warmingEl.style.top = this.getElementPosition(this.guidanceEl).top + this.guidanceEl.offsetHeight - 4 + 'px' let warmingElLeft = this.getElementPosition(needIntroduceEl).left - ((this.warmingEl.offsetWidth - needIntroduceEl.offsetWidth) / 2.0) if(warmingElLeft document.getElementsByTagName('body')[0].offsetWidth){ warmingElLeft = warmingElLeft - 10 - (this.warmingEl.offsetWidth - needIntroduceEl.offsetWidth) / 2.0 } this.warmingEl.style.left = warmingElLeft + 'px' this.warmingEl.innerHTML = maskIntroduceItem.warming //最后一个展示完恢复window点击事件 if(this.currentShowIndex >= this.maskIntroduceItems.length){ setTimeout(() => { //移除当前遮罩 this.el.remove() //移除当前提示框 this.warmingEl.remove() //移除箭头 this.guidanceEl.remove() //设置body可以滚动 document.getElementsByTagName('body')[0].style.overflow = 'auto' //恢复window事件 if(this.windowEvent){ window.onclick = this.windowEvent } }, 2000); } } // 获取元素在屏幕的位置 getElementPosition(element){ var top = element.offsetTop var left = element.offsetLeft var currentParent = element.offsetParent; while (currentParent !== null) { top += currentParent.offsetTop left += currentParent.offsetLeft currentParent = currentParent.offsetParent } return {top,left} } }
3. 概要と感想
実装原理は非常にシンプルで、複雑なロジックはあまりありません。現在の「導入が必要です」を渡したいと思います。 " タグ borderRadius を使用して中空部分の面取り値を設定しますが、背景色が透明なので、設定は有効になりますが、効果はありません。コードはぎこちないので、マスターを笑わないでください~
推奨学習: 「JavaScript ビデオ チュートリアル 」
以上がJS+CSSで初心者指導効果を素早く実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScript 不提供任何内存管理操作。相反,内存由 JavaScript VM 通过内存回收过程管理,该过程称为垃圾收集。

Node 19已正式发布,下面本篇文章就来带大家详解了解一下Node.js 19的 6 大特性,希望对大家有所帮助!

vscode自身是支持vue文件组件跳转到定义的,但是支持的力度是非常弱的。我们在vue-cli的配置的下,可以写很多灵活的用法,这样可以提升我们的生产效率。但是正是这些灵活的写法,导致了vscode自身提供的功能无法支持跳转到文件定义。为了兼容这些灵活的写法,提高工作效率,所以写了一个vscode支持vue文件跳转到定义的插件。

选择一个Node的Docker镜像看起来像是一件小事,但是镜像的大小和潜在漏洞可能会对你的CI/CD流程和安全造成重大的影响。那我们如何选择一个最好Node.js Docker镜像呢?

本篇文章给大家整理和分享几个前端文件处理相关的实用工具库,共分成6大类一一介绍给大家,希望对大家有所帮助。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Dreamweaver Mac版
ビジュアル Web 開発ツール
