zoukankan      html  css  js  c++  java
  • 第三章 (案例项目-超链接和图片提示效果)

    1 超链接提示

    <a href="#" title="这是我的超链接提示1"> 提示 </a>

    一般用 title 标签提示,缺点是响应速度慢,用 jQ 来手写类似功能。

    HTML

    <p><a href="#" class="tooltip" title="这是我的提示1">提示1</a></p>
    <p><a href="#" class="tooltip" title="这是我的提示2">提示2</a></p>
    <p><a href="#" title="这是自带提示1">自带提示2</a></p>
    <p><a href="#" title="这是自带提示2">自带提示2</a></p>

    CSS

    body{
        margin:0;
        padding:40px;
        background:#fff;
        font:80% Arial, Helvetica, sans-serif;
        color:#555;
        line-height:180%;
    }
    p{
        clear:both;
        margin:0;
        padding:.5em 0;
    }
    /* tooltip */
    #tooltip{
        position:absolute;
        border:1px solid #333;
        background:#f7f5d1;
        padding:1px;
        color:#333;
        display:none;
    }

    鼠标移动文字上,会显示 title 属性的文字

    为 class 为 tooltip 的超链接添加 mouseover 和 mouseout 事件

    <script type="text/javascript">
    
            $("a.tooltip").mouseover(function(){
                // 显示 title
            }).mouseout(function(){
                // 隐藏 title
            })        
    
    </script>

    思路:

    (1)当鼠标划入超链接

    ①创建一个<div>元素,内容为title值

    ②将创建的元素追加到文档中

    ③为它设置 X 坐标和 Y 坐标,使它显示在鼠标位置的旁边

    (2)当鼠标画出超链接时,移除<div>元素

    jQuery

    <script type="text/javascript">
        $(function(){
            $("a.tooltip").mouseover(function(e){
                var tooltip = "<div id='tooltip'>" + this.title+"</div>"; //创建 div 元素
                $("body").append(tooltip);     // 将它追加到文档中
                $("#tooltip")
                    .css({
                        "top":e.pageY + "px",
                        "left":e.pageX + "px"
                    }).show("fast");          // 设置X坐标和Y坐标,并显示
            }).mouseout(function(){
                $("#tooltip").remove();
            })
        })
    </script>

     运行效果有2个问题,当鼠标滑过后,<a> 标签中的title属性提示也会出现,其次是设置 x和y坐标的问题,由于自制的提示与鼠标的距离太近,有时候会引起无法提示

    首先移除<a>标签中的title提示功能

    ①当鼠标滑入时,给对象添加一个新属性。并把title值传给这个属性,然后清空属性title值

        this.myTitle = this.title;
        this.title = "";
        var tooltip = "<div id='tooltip'>"+this.title+"</div>"; 
        //创建 <div> 元素            

    ②当鼠标滑出时,再把对象的 myTitle 属性的值又赋给属性 title

    this.title = this.myTitle;

    • 为什么当鼠标滑出时,又把属性值赋给 title??

    因为当鼠标滑出时,需要考虑再次滑入时的 title 值,如果不将 myTitle 的值重新赋给 title ,当再次滑入时,title 值将为空。

    上述问题2,无法提示问题,可以重新设置 top 和 left 值

            var x = 10;
            var y = 20;
            $("#tooltip").css({
                "top": (e.pageY+y)+"px";
                "left": (e.pageX+x)+"px";
            })

    全部修改后完整代码为:

        <script type="text/javascript">
            $(function(){
                var x = 10;
                var y = 20;
                $("a.tooltip").mouseover(function(e){
                    this.myTitle = this.title;
                    this.title = "";
                    var tooltip = "<div id='tooltip'>"+this.myTitle+"</div>"; //创建 <div> 元素
                    $("body").append(tooltip);
                    $("#tooltip")
                        .css({
                            "top": (e.pageY+y)+"px",
                            "left": (e.pageX+x)+"px"
                        }).show("fast");
                }).mouseout(function(e){
                    this.title = this.myTitle;
                    $("#tooltip").remove();
                });
            })
        </script>

    当鼠标在超链接上移动时,提示效果不会跟着鼠标移动,可以为超链接加一个 mousemove 事件

    $(function(){
        var x = 10;  
        var y = 20;
        $("a.tooltip").mouseover(function(e){
               this.myTitle = this.title;
            this.title = "";    
            var tooltip = "<div id='tooltip'>"+ this.myTitle +"</div>"; //创建 div 元素
            $("body").append(tooltip);    //把它追加到文档中
            $("#tooltip")
                .css({
                    "top": (e.pageY+y) + "px",
                    "left": (e.pageX+x)  + "px"
                }).show("fast");      //设置x坐标和y坐标,并且显示
        }).mouseout(function(){        
            this.title = this.myTitle;
            $("#tooltip").remove();   //移除 
        }).mousemove(function(e){
            $("#tooltip")
                .css({
                    "top": (e.pageY+y) + "px",
                    "left": (e.pageX+x)  + "px"
                });
        });
    })

    2 图片提示效果

    点击小图片时大图显示,并且大图随着鼠标移动而移动。

    基本结构样式如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script type="text/javascript" src="jquery.min.js"></script>
        <style type="text/css">
            body{
                margin: 0;
                padding: 40px;
                font: 80% Arial,Helvetica,sans-serif;
                color: #555;
                background: #fff;
                line-height: 180%;
            }
            img{
                border: none;
            }
            ul,li{
                margin: 0;padding: 0;
            }
            li{
                list-style: none;
                float: left;
                display: inline;
                margin-right: 10px;
                border: 1px solid #aaa;
            }
    
            /* tooltip */
            #tooltip{
                position: absolute;
                border: 1px solid #ccc;
                background: #333;
                padding: 2px;
                display: none;
                color: #fff;
            }
        </style>
    </head>
    <body>
            <ul>
                <li><a href="images/apple_1_bigger.jpg" class="tooltip" title="苹果 iPod"><img src="images/apple_1.jpg" alt="苹果 iPod" /></a></li>
                <li><a href="images/apple_2_bigger.jpg" class="tooltip" title="苹果 iPod nano"><img src="images/apple_2.jpg" alt="苹果 iPod nano"/></a></li>
                <li><a href="images/apple_3_bigger.jpg" class="tooltip" title="苹果 iPhone"><img src="images/apple_3.jpg" alt="苹果 iPhone"/></a></li>
                <li><a href="images/apple_4_bigger.jpg" class="tooltip" title="苹果 Mac"><img src="images/apple_4.jpg" alt="苹果 Mac"/></a></li>
            </ul>
    </body>
    </html>

    § 参考上例超链接提示效果。只需要修改 <div> 代码即可

    var tooltip = "<div id='tooltip'>"+ this.myTitle +"</div>";  
    
    // 修改为
    
    var tooltip = "<div id='tooltip'><img src='"+ this.href +"' alt='产品预览图'> </div>";

    为加强效果,可在预览的大图下添加文字说明

    方法:

    可根据 title 值来获得图片相应的介绍文字

    this.myTitle = this.title;
    this.title = "";    
    var imgTitle = this.myTitle ? "<br/>" + this.myTitle : "";

    然后将它追加到 <div> 元素中

    var tooltip = "<div id='tooltip'><img src='"+ this.href +"' alt='产品预览图'/>"+imgTitle+"</div>"; //创建 div 元素

    上述 var a = b ? c : d ; 是三元运算符。(声明a ,它的值为 b ,如果 b 为真,取值为 c ,否则取值为 d)

    var imgTitle = this.myTitle? "<br/>" + this.myTitle : "";
    
    //等价于
    
    var imgTitle;
    if(this.myTitle){
        imgTitle = "<br/>" + this.myTitle;
    }else{
        imgTitle = "";
    }

    完整代码:

    <script type="text/javascript">
    
    $(function(){
        var x = 10;
        var y = 20;
        $("a.tooltip").mouseover(function(e){
            this.myTitle = this.title;
            this.title = "";    
            var imgTitle = this.myTitle? "<br/>" + this.myTitle : "";
            var tooltip = "<div id='tooltip'><img src='"+ this.href +"' alt='产品预览图'/>"+imgTitle+"</div>"; //创建 div 元素
            $("body").append(tooltip);    //把它追加到文档中                         
            $("#tooltip")
                .css({
                    "top": (e.pageY+y) + "px",
                    "left":  (e.pageX+x)  + "px"
                }).show("fast");      //设置x坐标和y坐标,并且显示
        }).mouseout(function(){
            this.title = this.myTitle;    
            $("#tooltip").remove();     //移除 
        }).mousemove(function(e){
            $("#tooltip")
                .css({
                    "top": (e.pageY+y) + "px",
                    "left":  (e.pageX+x)  + "px"
                });
        });
    })
    
    </script>
  • 相关阅读:
    CocoaPods 中删除不需要的第三方
    真机测试是提示 的 iPhone is busy: Preparing debugger support for
    关于 Expression is not assignable 错误
    关于查询ios的app更新的历史版本记录
    ios开启双重认证之填坑式教学
    swift 有道 翻译文档(2 条件语句 循环语句)
    swift 有道 翻译文档(1 定义变量常量,数组字典)
    渐变UI
    cornerstone 使用
    cocoaPods安装
  • 原文地址:https://www.cnblogs.com/cimuly/p/7117759.html
Copyright © 2011-2022 走看看