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

阀门网站设计广州网站制作公司电话

阀门网站设计,广州网站制作公司电话,ps如何做音乐网站,南昌做个网站多少钱自定义组件是每个前端开发者必备的技能。我们在使用现有框架时难免有一些超乎框架以处的特别的需求#xff0c;比如关于弹窗#xff0c;每个应用都会用到#xff0c;但是有时我们使用的框架中提供的弹窗功能也是功能有限#xff0c;无法满足我们的应用需求#xff0c;今天…自定义组件是每个前端开发者必备的技能。我们在使用现有框架时难免有一些超乎框架以处的特别的需求比如关于弹窗每个应用都会用到但是有时我们使用的框架中提供的弹窗功能也是功能有限无法满足我们的应用需求今天 我来讲一下在React中如何自定义各种样式的弹窗。相信通过这篇文章你能在自定义组件方面技能有一个质的提升。相关的知识能够掌握的更加牢固。 先看最终的效果 首先本实例都是在MUI及基础上设计的样式部分我使用了emotion-react。 弹窗的设计有两种方案一种是直接把弹窗组件嵌入到页面中用的时候让它直接显示或关闭即可一般的UI框架都是采用这种方法。这种使用方法有一个好处是不受浏览器插件的影响尤其是广告拦截插件的影响。但使用上有点不方便必须要在使用弹窗的组件中加入这个弹窗使用上不太方便。另一种方案是动态创建弹窗组件在使用的时候直接alert就可以了。就像使用js原生的弹窗一样简单。本篇文章就是围绕这种设计思路设计一个优雅的弹窗组件。 弹窗遮罩 遮罩很简单就一个div, 在MUI里就是一个Box组件。 const maskCss cssposition: fixed;background-color: rgba(0,0,0,0.6);border-radius: 5px;top: 0px;left: 0px;width: 100%;height: 100%;overflow: hidden;z-index: 999;display: flex;justify-content: center;align-items: center;;这是遮罩的样式我直接赋于一个Box就好了。 /** jsxImportSource emotion/react */ import { css, jsx, keyframes } from emotion/react import { useState, useRef, useEffect, useCallback } from react; import Box from mui/material/Box;export default function Model(props) {return (Box css{maskCss}/Box) }我们再来临时创建一个简单的弹窗主体 /** jsxImportSource emotion/react */ import { css, jsx, keyframes } from emotion/react import React, { useState } from react; import Box from mui/material/Box;const maskCss cssposition: fixed;background-color: rgba(0,0,0,0.6);border-radius: 5px;top: 0px;left: 0px;width: 100%;height: 100%;overflow: hidden;z-index: 999;display: flex;justify-content: center;align-items: center;;const modelCss cssposition: relative;background-color: white;border: 1px solid #ccc;border-radius: 5px;overflow: hidden;box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);width: 400px;height: 300px;const titleCss cssbackground-color: #f0f0f0;padding: 8px;cursor: move;;const modelContentCss csspadding: 16px;;const Modal (props) {const {onClose} props;const onClick (e) { console.log(target:, e.target.className);}return (Box css{maskCss}onClick {onClose}Box css{modelCss}Boxcss{titleCss}className.modelHandler这是标题/BoxBox css{modelContentCss}这是弹窗内容/Box/Box/Box); };export default Modal; 这是一个简单的弹窗如何让它弹出来呢。我的想法是动态的把这个弹窗插入到document的body // 创建一个div容器,作为弹窗的根节点 const modelContainer document.createElement(div);// 将div容器添加到body中 document.body.appendChild(modelContainer);上面我只是创建了一个dom节点但我们必须把这个dom节点添加到React中才能真实的渲染出来。 // 创建一个根节点 const modelRoot ReactDOM.createRoot(modelContainer);然后渲染出来 modelRoot.render(Model / );这样就在body中插入了model组件了并且能渲染出来。当然能挂载我们还要有卸载才行。很简单 // 卸载事件 const unmountEvent () {modelContainer.remove(); }我们将上面的弹窗方法整合成一个hook就好了这样调用起来就相当的哇塞了。 import ReactDOM from react-dom/client; import Model from ./_Model;//可高度自定义的统一弹窗。 export default function useAlert() {return (configure) {// 创建一个div容器,作为弹窗的根节点const modelContainer document.createElement(div);// 将div容器添加到body中document.body.appendChild(modelContainer);// 创建一个根节点const modelRoot ReactDOM.createRoot(modelContainer);// 卸载事件const unmountEvent () {modelContainer.remove();}modelRoot.render(ModelonClose{unmountEvent}{...configure}{configure.component || null}/Model);}}我们把卸载事件传递给了Model在遮罩点击事件上调用这样就能开发弹窗也能关闭弹窗。 我们这样调用就好了 const alert useAlert(); alert();你看一个基本的弹窗就设计完了。
http://www.w-s-a.com/news/620893/

相关文章:

  • 哈尔滨营销网站建设电子商城网站开发要多少钱
  • 免费织梦导航网站模板下载地址自己建站网站
  • 获取网站访客qq号码代码做抽奖网站违法吗
  • 湖南大型网站建设公司排名偷网站源码直接建站
  • 网站建设周期规划北京网站设计必看刻
  • 如何做自己的在线作品网站深圳网站设计公司的
  • 网站开发外包公司wordpress最简单模板
  • 湖南省建设人力资源网站wordpress主机pfthost
  • 淮安软件园哪家做网站各网站特点
  • 网站长尾关键词排名软件重庆荣昌网站建设
  • 建个商城网站多少钱茂名专业网站建设
  • 开通公司网站免费的网站app下载
  • 跨境电商网站模板wordpress壁纸
  • 国内做网站网站代理电子商务网站建设与维护概述
  • 如何做地方网站推广沈阳网势科技有限公司
  • 哈尔滨网站优化技术涵江网站建设
  • 做网站搞笑口号wordpress全屏动画
  • 怎么可以建网站小程序代理项目
  • 怎样做软件网站哪个网站用帝国cms做的
  • 网站开发编程的工作方法wordpress dux-plus
  • 廊坊电子商务网站建设公司网站进不去qq空间
  • 南宁网站推广费用创意网页设计素材模板
  • 深圳技术支持 骏域网站建设wordpress 酒主题
  • 东莞网站建设+旅游网站改版数据来源表改怎么做
  • 手机端做的优秀的网站设计企业做网站大概多少钱
  • 优化网站使用体验手机网站解析域名
  • 网站制作 商务做网站的软件名字全拼
  • 阿里巴巴网官方网站温州网站建设设计
  • 传奇购买域名做网站国外网站设计 网址
  • 西安凤城二路网站建设seo网站是什么