html自定义弹框

一、要实现的功能

1、弹框弹出时有遮罩

2、弹框内的文字过多时右侧有滚动条

3、根据执行结果变更弹框title的样式

二、具体实现

思路:定义一个有宽高的div,默认隐藏,当要显示时,设置为display=block来显示

1、定义div布局,一个遮罩层;一个弹框(弹框中有标题和内容两部分)

<div id="dialogmask" class="dialogmask opacity"></div>
<div id="dialog" class="box" style="display: none"> 
    <div id="dialog_title" class="dialogtitle">
        <label style="padding-left: 10px">执行结果</label>
        <label style="float: right;padding-right: 10px;" onclick="closelog()">[关闭]</label>
    </div>
      
    <div id="dialog_content" class="dialogcontent">
        <div id="logcontent" class="logcontent”>要展示的弹框内容</div>
          
    </div>   
</div>

2、弹框样式

2.1 弹框是否显示

默认不显示:display=none

当显示时,通过jquery更改显示样式display=block

.box {
    position: absolute;
        display: none;
    width: 60%;
    height: 70%;
    z-index: 100; /*值越大,和其他层层叠时越在上面*/
    left: 20%;
    top: 15%;
    background-color: #fff;
    border: 1px solid rgb(0, 153, 153);
}

2.2 弹框中内容部分文字超长时显示滚轴

设置出现滚轴:

overflow:scroll

必须设置height

.dialogcontent {
    padding-top: 20px;
    OVERFLOW: scroll;
    height: calc(100% - 20px);
    height: -webkit-calc(100% - 20px);
}

注意:height计算

因为父div设置了height,所以这里设置100%即会撑满整个

但是因为弹框中还有标题占用了20px,所以我们需要做一个padding-top:20px使其不要和标题部分重合

height计算也需要减去标题的20px,通过calc()计算

2.3 设置显示的层级

z-index:100;//设置层级,数值越大的在最上层显示

所以弹框的z-index最大,然后是遮罩层的

3、遮罩层样式

.dialogmask {
    position: fixed;
    top: 0px;
    height: 100%;
    width: 100%;
    z-index: 80;
    display: none;

}

.opacity { /*遮罩浑浊处理*/
    opacity: 0.3;
    filter: alpha(opacity=30);
    background-color: #000;
}

同样的初始时设置display:none;显示的时候更改display=block来显示

z-index的值要比弹框的小

position:fixed;展示在整个页面内

4、Jquery变更display等css样式

显示弹框:

function showlog_result(result, info) {//展示具体日志内容,以及根据结果是否正确变更title的颜色
    $("#dialog").css({display: "block"});
    $("#dialogmask").css({display: "block"});
    $("#logcontent").html(info);
    if (result) {
        $("#dialog_title").css({background: "#00CC00"});
    } else {
        $("#dialog_title").css({background: "#FF3333"});
    }

}

说明:通过Jquery的css()方法更改样式后,根据result结果是true还是false变更标题部分的背景颜色

关闭弹框:

function close() {//关闭日志弹框
    $("#dialog").css({display: "none"});
    $("#dialogmask").css({display: "none"});
}

三、实例代码

<!DOCTYPE html>
<html lang="en">
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>

<head>
    <meta charset="UTF-8">
    <title>测试弹框</title>
    <style>
        .dialogmask {
            position: fixed;
            top: 0px;
            height: 100%;
            width: 100%;
            z-index: 80;
            display: none;

        }

        .opacity { /*遮罩浑浊处理*/
            opacity: 0.3;
            filter: alpha(opacity=30);
            background-color: #000;
        }

        .box {
            overflow: hidden;
            position: absolute;
            width: 60%;
            height: 70%;
            z-index: 100; /*值越大,和其他层层叠时越在上面*/
            left: 20%;
            top: 15%;
            background-color: #fff;
            border: 1px solid rgb(0, 153, 153);
        }

        .dialogtitle {
            width: 100%;
            height: 30px;
            line-height: 30px;
            position: absolute;
            font-size: 18px;
            top: 0px;
            background-color: lightgrey;
        }

        .dialogcontent {
            padding-top: 20px;
            OVERFLOW: scroll;
            height: calc(100% - 20px);
            height: -webkit-calc(100% - 20px);
        }

        .logcontent {
            padding: 10px;
        }
    </style>
    <script>
        //显示弹框,并且根据结果是true或false来更改标题部分的颜色
        function showlog_result(result, info) {//展示具体弹框内容,以及根据结果是否正确变更title的颜色
            $("#dialog").css({display: "block"});//通过Jquery的css()更改样式
            $("#dialogmask").css({display: "block"});
            $("#logcontent").html(info);
            if (result) {
                $("#dialog_title").css({background: "#00CC00"});
            } else {
                $("#dialog_title").css({background: "#FF3333"});
            }

        }

        function closepop() {//关闭弹框
            $("#dialog").css({display: "none"});
            $("#dialogmask").css({display: "none"});
        }
    </script>
</head>
<body>
<div>
    <button onclick="showlog_result(true,‘展示正确内容的弹框‘)">展示正确弹框</button>
    <button onclick="showlog_result(false,‘展示错误内容的弹框‘)">展示错误弹框</button>
</div>
<div id="dialogmask" class="dialogmask opacity"></div>
<div id="dialog" class="box" style="display: none"> 
    <div id="dialog_title" class="dialogtitle">
        <label style="padding-left: 10px">执行结果</label>
        <label style="float: right;padding-right: 10px;" onclick="closepop()">[关闭]</label>
    </div>
      
    <div id="dialog_content" class="dialogcontent">
        <div id="logcontent" class="logcontent">要显示的内容区域~</div>
          
    </div>
        
</div>
</body>
</html>

原文地址:https://www.cnblogs.com/meitian/p/9026412.html

时间: 2024-10-07 12:46:08

html自定义弹框的相关文章

简单的自定义弹框

作为初学者,很多人都是用的系统自带的弹框,非常的简单,完全不能满足用户的交互,所以这里,我们需要自定义一个弹框,把输入框.图片.按钮等添加到弹框里面.为了避免重复冗余的代码,参考了别人的代码,自己做了一个自定义弹框,可以在项目中使用到.给大家一个思路. 这是代码的接口定义,只需要调用一行代码就可以弹出一个自定义的视图啦.还会添加一些动画效果,让弹框弹出跟消失更美观. + (void)showPromptBoxWithCustomView:(UIView *)customView; + (void

Windows Phone开发学习笔记(1)---------自定义弹框

Windows Phone开发学习笔记(1) ---------自定义弹框 在WP中自定义弹框是可以通过Popup类实现的. Popup的语法为: [ContentPropertyAttribute("Child")] [LocalizabilityAttribute(LocalizationCategory.None)] public class Popup : FrameworkElement, IAddChild; 这是Popup使用的小列子 Popup codePopup =

自定义弹框加载方式

- (void)show { if ([UIApplication sharedApplication].keyWindow.rootViewController.navigationController) { [[UIApplication sharedApplication].keyWindow.rootViewController.navigationController.view addSubview:self]; }else{ [[UIApplication sharedApplica

js组件--自定义弹框

javascript自定义弹框 性能太差,有很大的改善空间 1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <!--<link href="styles/reset.css" type="text/css&

自定义弹框

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv=&q

RN code push自定义弹框

最近在弄react native的code push热更新问题.开始是用的后台默默更新配置.由于微软服务器速度问题,经常遇到用户一直在下载中问题.而用户也不知道代码需要更新才能使用新功能,影响了正常业务流程.而目前公司也无力搭建自己的服务器和dns设置.所以比较快速的方案就是,前端自定义热更新弹框,在需要更新代码的情况下禁止用户向下操作. ok,废话少说,直接上代码: 这是构建一个弹框,强制文案提示和非强制文案提示弹框. /** * Created by susie on 2018/9/20.

swift 自定义弹框

// //  ViewController.swift //  animationAlert // //  Created by su on 15/12/9. //  Copyright © 2015年 tian. All rights reserved. // import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //灰色的遮挡板 let o

自定义弹框,点击提示框外空白区域,让弹框消失

tip: self.mainView  是提示框的全屏背景.一般是透明的黑色 self.bgImg   添加提示内容的主要view 方法一:正常情况下,各个页面都有touchesBegan:withEvent事件的触发.使用该方法 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch *touch = [touches anyObject]; // 计算搜索框范围 CGPoint touchPoint

android之自定义弹框

step1 创建窗体 final AlertDialog dialog =new Builder(this).create(); step2 获取View View viewDialog =View.inflate(this, R.layout.userinfo_dialog_edit, null); final EditText txtUserName=(EditText)viewDialog.findViewById(R.id.txtUserName); final EditText txt