css实现移动端消息提醒按钮

1、利用css实现移动端消息提醒按钮,页面效果如下:

2、代码实现思路和关键点分析:

代码的结构如下图所示,一共有4个提醒模块,每个模块都用li标签包裹起来,li标签里设置两个div,左边的div是文案,右边的div用于包裹按钮。

css样式一看就懂,就不啰嗦了。本文的重点是按钮效果的实现。

2.1 如上图,我们用一个class为“.setting_btn”的div 绘制椭圆,设置背景色、1个像素的补白。以此让中间白色的圆与外框看起来有1px的间距。

用class为“.setting_circle”的em绘制原型,因为em是行内元素,用display:inline-block将em变成行内块元素,以便设置em的宽和高。

将一个width:30px height:28的块元素设置成圆的方法是: border-radius 2倍的数值大于或等于width和height的值,就能显示出圆形。

例如:此处我设置border-radius:40,width:30px; height:28px; border-radius 的2倍等于80px,    40X2=80 > 28

2.2 按钮从“关闭”到“打开” 一共完成了如下两件事。

a:背景色由 #999 变成了 #FF777B

b:白色的圆圈由左边匀速地平行到了右边。

c:点击按钮

因为我们在设置了样式*{box-sizing:border-box},让宽度和高度分别减去边框和内边距才能得到内容的宽度和高度,所以我们可以巧妙的给em的父元素加padding,以此让em移动到右边。为了有移动的效果,我们需要用到transition属性。

简写transition属性,transition:padding-left 0.2s linear 0s;  意思是:规定应用过渡的 CSS 属性是padding-left,定义过渡效果花费的时间为0.2秒,规定过渡效果的时间曲线为linear,linear表示以相同速度开始至结束的过渡效果,规定过渡效果从0s开始。

我们给em的父元素增加点击事件,点击后增加或去掉"tipOpen“样式,.tipOpen{ background-color: #FF777B;padding-left: 19px;}

3  完整的代码如下:

<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">    <!--让viewport的宽度等于物理设备上的真实分辨率,初始缩放比例为1:1,不允许用户缩放-->    <title>css实现移动端消息提醒按钮</title>    <style type="text/css">        * {            margin: 0;            padding: 0;            box-sizing: border-box; /*通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。*/        }        body {            width: 100%;            height: 100%;            background:linear-gradient(37deg, #FD465F 0%, #FF8080 100%);        }        li {            list-style-type: none;        }        ::-moz-selection {            text-shadow: none;        }

        ::selection {            text-shadow: none;        }        .setting_sort{            padding-top: 20px;            padding-bottom: 20px;        }        .setting_sort ul li{            width: 290px; height: 65px;            padding:15px 20px;            margin: 0 auto 15px;            border-radius: 15px;            background-color: #fff;        }        .setting_sort ul li p:first-child{            font-size: 14px;            color: #F75B5B;            margin-bottom: 5px;        }        .setting_sort ul li p:last-child{            font-size: 12px;            color: #F75B5B;            filter:alpha(opacity=50);            opacity:0.5;        }        .setting_sort_left{            width: 180px;            float: left;        }        .setting_sort_right{            width: 50px;            float: right;        }        .setting_btn{            width: 50px; height: 30px;            padding: 1px;            border-radius: 60px;            background-color: #999;            transition:padding-left 0.2s linear;            -webkit-transition:padding-left 0.2s linear;        }        .setting_circle{            display: inline-block;            width: 30px; height: 28px;            border-radius: 40px;            background: #fff;        }        .tipOpen{            background-color: #FF777B;            padding-left: 19px;        }    </style></head><body>    <div class="setting_sort">        <ul>            <li>                <div class="setting_sort_left">                    <p>优惠活动提醒</p><p>最新优活动提醒</p>                </div>                <div class="setting_sort_right">                    <div class="setting_btn">                        <em class="setting_circle"></em>                    </div>                </div>            </li>            <li>                <div class="setting_sort_left">                    <p>系统消息提醒</p><p>接受系统提示信息</p>                </div>                <div class="setting_sort_right">                    <div class="setting_btn">                        <em class="setting_circle"></em>                    </div>                </div>            </li>            <li>                <div class="setting_sort_left">                    <p>物流消息提醒</p><p>物流有变化时提醒</p>                </div>                <div class="setting_sort_right">                    <div class="setting_btn tipOpen">                        <em class="setting_circle"></em>                    </div>                </div>            </li>            <li>                <div class="setting_sort_left">                    <p>收藏商品降价提醒</p><p>当低于商品收藏时的价格立马提醒</p>                </div>                <div class="setting_sort_right">                    <div class="setting_btn tipOpen">                        <em class="setting_circle"></em>                    </div>                </div>            </li>        </ul>    </div>

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script><script type="text/javascript">    $(‘.setting_btn‘).on(‘click‘,function(){        var $this =$(this);        $this.toggleClass(‘tipOpen‘);    })</script></body></html>

PS:到此第一篇博客完成,如有错误的地方请指出,很愿意一起学习、共同进步。

				
时间: 2024-12-13 16:27:18

css实现移动端消息提醒按钮的相关文章

RTX发送消息提醒实现以及注意事项

一.RTX简介 RTX是腾讯公司推出的企业级即时通信平台.该平台定位于降低企业通信费用,增强企业内部沟通能力,改善企业与客户之间的沟通渠道,创造新兴的企业沟通文化,提高企业生产力.RTX平台的主要功能,包括企业内部实时信息交互.视频语音网络会议.企业短信中心.标准目录服务支持等等.RTX平台具有很高的实用性.易用性和可管理性.除了底层采用128位对称加密技术之外,在实际应用中,RTX可以通过员工实名制.记录对外交互信息等措施,确保企业应用的通信安全. 同时,腾讯公司为所有的RTX用户提供企业级的

使用SignalR实现消息提醒

Asp.net SignalR是微软为实现实时通信的一个类库.一般情况下,SignalR会使用JavaScript的长轮询(long polling)的方式来实现客户端和服务器通信,随着Html5中WebSockets出现,SignalR也支持WebSockets通信.另外SignalR开发的程序不仅仅限制于宿主在IIS中,也可以宿主在任何应用程序,包括控制台,客户端程序和Windows服务等,另外还支持Mono,这意味着它可以实现跨平台部署在Linux环境下. SignalR内部有两类对象:

Asp.net SignalR 实现服务端消息推送到Web端

原文:http://www.cnblogs.com/wintersun/p/4148223.html 之前的文章介绍过Asp.net SignalR,  ASP .NET SignalR是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.  今天我们来实现服务端消息推送到Web端,   首先回顾一下它抽象层次图是这样的: 实际上 Asp.net SignalR 2 实现 服务端消息推送到Web端, 更加简单. 为了获取更好的可伸缩性, 我们引入消息队列, 看如下

PHP实现RTX发送消息提醒

RTX是腾讯公司推出的企业级即时通信平台,大多数公司都在使用它,但是我们很多时候需要将自己系统或者产品的一些通知实时推送给RTX,这就需要用到RTX的服务端SDK,建议先去看看RTX的SDK开发文档(客户端,服务器),我们先看看功能效果:                   当然,现在很多公司都已经在RTX的基础上升级成了企业微信,没关系,这个API同样可以使用,还是同样的接口,只是展示效果不一样而已: 下面是用PHP实现RTX发送消息提醒: 1.首先在服务器端安装RTX的服务端和客户端,再安装

Android实例-设置消息提醒(XE8+小米2)

结果: 1.二个按钮可以新建消息提醒,最小化也是新建消息提醒. 2.程序必须最小化后才能点击消息提醒Label2才会有反映. 实例代码: 1 unit Unit1; 2 3 interface 4 5 uses 6 System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, 7 FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialog

[Asp.net 开发系列之SignalR篇]专题六:使用SignalR实现消息提醒

一.引言 前面一篇文章我介绍了如何使用SignalR实现图片的传输,然后对于即时通讯应用来说,消息提醒是必不可少的.现在很多网站的都有新消息的提醒功能.自然对于SignalR系列也少不了这个功能的实现了.在这篇文章中将介绍如何使用SignalR+iNotify库来实现新消息的声音和弹框提醒. 二.消息提醒的实现思路 消息提醒也就是当客户有新消息来时,在客户端的右下角进行弹框提醒.要实现这个功能的思路是: SignalR服务端推送消息到客户端的实现方式为调用客户端的receiveMessage方法

Laravel-admin jquery-toastr 消息提醒、播放音频

应用情景,有新的订单生成,后台进行消息提醒并播放音频(这里用到轮询简单实现):下面附代码 1.找到laravel-admin 中的 index.blade.php 文件进行编辑 {{-- 音频通知 --}} <audio style="display:none; height: 0" id="bg-music" preload="auto" src="http://fjdx.sc.chinaz.com/Files/DownLoad

WPF实现消息提醒(广告弹窗)

原文:WPF实现消息提醒(广告弹窗) 1.先上效果图: 2.1t提示框界面. 主窗口界面没什么内容,就放了一个触发按钮.先绘制通知窗口(一个关闭按钮,俩个文本控件),可以设置下ResizeMode="NoResize" WindowStyle="None"   Topmost="True", 去掉窗口标题,并使提示窗口始终处于最上层. <Border BorderThickness="1" BorderBrush=&qu

RTX消息提醒工具设计文档

为什么要做 项目上线后,系统依然由各业务模块负责人自己维护.而后台运行的各种业务服务结果,不能及时反馈到业务负责人.而等到客户反馈时则会太被动.为了能及时发现并解决项目问题,设计了该工具. 可利用资源 1.公司内不能连接外网,沟通主要使用RTX.可以提供RTX服务器信息 2.公司内可以直接连到生产环境. 怎么做1.软件结构图 2.时时获取服务日志 开发环境可以直接连接到生产环境,则可以通过一个独立线程定时获取错误日志信息.错误日志信息包括:错误模块,错误描述.3.配置RTX与业务模块的关系 RT