那些曾经遇到的问题点

一、常用 meta 标签的作用

H5 项目中可能用到的 <meta> 标签

<meta name="viewport" content="target-densitydpi=device-dpi, width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui,  viewport-fit=cover">
<!-- target-densitydpi=device-dpi 使用屏幕自带的dpi 不进行缩放 -->
<!-- UC强制全屏 -->
<meta name="full-screen" content="yes">
<!-- QQ强制全屏 -->
<meta name="x5-fullscreen" content="true">
<!-- UC应用模式 -->
<meta name="browsermode" content="application">
<!-- QQ应用模式 -->
<meta name="x5-page-mode" content="app">
<!-- 是否启用 WebApp 全屏模式,删除苹果默认的工具栏和菜单栏 -->
<meta name="apple-mobile-web-app-capable" content="yes"/>
<!--uc浏览器判断到页面上文字居多时,会自动放大字体优化移动用户体验。添加以下头部可以禁用掉该优化-->
<meta name="wap-font-scale" content="no">
复制代码

二、在微信中 audio 自动播放音乐

document.addEventListener('DOMContentLoaded', function () {
    function audioAutoPlay() {
        var audio = document.getElementById('bg-music');            
        audio.play();        
        document.addEventListener("WeixinJSBridgeReady", function () {            
            audio.play();        
        }, false);    
    }    
    audioAutoPlay();
});
复制代码

三、问题点汇总

  • 1、弹性布局

    display:flex兼容的浏览器版本 IE 10+,Firefox 22+,Chrome 21+,Safira 6.1+,Opera 12.1+

    flex-wrap IE 11+,Firefox 28+,Chrome 29+,Safira 9+,Opera 17+

    目前没有找到解决flex-wrap兼容性的方法,建议:不使用弹性布局,给子元素添加 inline-block

  • 2、多行文本溢出隐藏并将隐藏部分换成省略号

    • 单行溢出文本显示省略号
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    复制代码
    • 多行文本溢出显示省略号,webkit私有属性,仅支持webkit浏览器
    overflow: hidden;
    text-overflow: ellipsis;
    text-overflow: ellipsis-lastline;
    display: -webkit-box;
    -webkit-line-clamp: 2; /*需要显示的行数*/
    -webkit-box-orient: vertical;
    border: 1px solid #ddd;
    复制代码
  • 3、背景色 在IE8的兼容性(包括渐变色)

    • 简单的透明度

      chrome && firefox background: #000; opacity: 0.5;

      IE8: filter:alpha(opacity=50);

    • 2、渐变的背景色 (下面的例子是水平方向的线性渐变)

      chrome && firefox && Trident background-image: -webkit-linear-gradient(0, #2babe0 33%, #1373bd 66%); background-image: -moz-linear-gradient(0, #2babe0 33%, #1373bd 66%); background-image: -o-linear-gradient(0, #2babe0 33%, #1373bd 66%); filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr=#2babe0, endColorstr=#1373bd); /IE<9>/ -ms-filter: progid:DXImageTransform.Microsoft.gradient (GradientType=1, startColorstr=#2babe0, endColorstr=#1373bd); /IE8+/

  • 4、break & continue

    break 语句可跳出循环后,会继续执行循环之后的代码; break 不带标签引用时,只能用在循环或switch中; 在循环多,结构复杂的时候会用带标签的break,指定跳出js代码块(循环、if语句及代码块)。

    continue 语句中断循环中的迭代,若出现了指定条件,然后继续循环中的下一代迭代,且continue仅能用于循环中。

    break & continue 区别 :

    var x = 0;
    while(x++ < 10) {
        if(x == 3) {
            break;
        }
        console.log(x);
    }
    // 1,2
    
    var x = 0;
    while(x++ < 10) {
        if(x == 3) {
            continue;
        }
        console.log(x);
    }
    // 1,2,4,5,6,7,8,9,10
    复制代码
  • 5、CSS3中的相邻兄弟选择器 + 方便之处

    选择当前类元素后相邻的其他兄弟元素,列表中只需要将每两个元素之间或者当前元素以后元素设置10px的间距/边框时(nth-child(n)不兼容IE8)

  • 6、background-attachment

    设置背景图像是否固定或者随着页面的其余部分滚动的效果。

    scroll 默认值,背景图像会随着页面其余部分滚动 fixed 当页面的其余部分滚动时,背景图像不会移动 inherit 规定应该从父元素继承background-attachment属性的设置 (不兼容IE8) none | text | all | element 默认值 text 可以选择文本 none 文本不能被选择 all 当所有内容作为一个整体时可以被选择,如果双击或者在上下文上点击子元素,那么被选择的部分将是以该子元素向上回溯的最高祖先元素。 element 可以选择文本,但是选择范围受元素边界约束 IE6-9不支持该属性,但支持使用标签属性 onselectstart="return false;" 来达到 user-select:none 的效果; Safari和Chrome也支持该标签属性;直到Opera12.5仍然不支持该属性,但和IE6-9一样,也支持使用私有的标签属性 unselectable="on" 来达到 user-select:none的效果;unselectable 的另一个值是 off;除Chrome和Safari外,在其它浏览器中,如果将文本设置为 -ms-user-select:none;则用户将无法在该文本块中开始选择文本。不过,如果用户在页面的其他区域开始选择文本,则用户仍然可以继续选择将文本设置为 -ms-user-select:none; 的区域文本;

  • 7、自定义滚动条样式

/三角箭头的颜色/ scrollbar-arrow-color: #bbb; /滚动条滑块按钮的颜色/ scrollbar-face-color: #999; /滚动条整体颜色/ scrollbar-highlight-color: #999; /滚动条阴影/ scrollbar-shadow-color: #999; /滚动条轨道颜色/ scrollbar-track-color: #eee; /* 滚动条整体样式 */

div::-webkit-scrollbar {
    width: 6px; /* 高宽分别对应横竖滚动条的尺寸 */
    height: 1px;
}
/* 滚动条里面小方块 */
div::-webkit-scrollbar-thumb {
    border-radius: 4px;
    background: #999;
}
/* 滚动条里面轨道 */
div::-webkit-scrollbar-track {
    border-radius: 4px;
    background: #f2f2f2;
}
复制代码
  • 8、parseInt(string, radix)

    string 必需。要被解析的字符串

    radix 可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。 如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。 如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

    返回解析后的数字。

  • 9、RegExp对象的方法

    • test()

      检索字符串中的指定值,返回值是true或false var RegExp1 = new RegExp('e'); console.log(RegExp1.test('This is egg')); // true

    • exec()

      检索字符串中的指定值,返回值是被找到的值,返回一个数组,其中存放区配的结果,如果未找到区配,则返回值为null

      var str = "Visit W3School"; var patt = new RegExp("W3School","g"); console.log(patt.exec(str)); // W3School console.log(patt.lastIndex); // 14

    • compile()

      用于改变RegExp,既可以改变检索模式,也可以添加或删除第二个参数,存在返回 true,否则返回 false

      语法:RegExpObject.compile(regexp,modifier) regexp 正则表达式 modifier 规定匹配的类型。"g" 用于全局匹配,"i" 用于区分大小写,"gi" 用于全局区分大小写的匹配。

      通过 compile() 方法,改变正则表达式,用 "person" 替换 "man" 或 "woman", var str="Every man in the world! Every woman on earth!"; patt=/(wo)?man/g; patt.compile(patt); str1=str.replace(patt,"person"); console.log(str1); //Every person in the world! Every person on earth!

  • 10、Toast组件(react)

export let toastIt = function (text: string, timeout: number) {
    var timeout = timeout || 3000;
    let toast = document.createElement('DIV');    
    toast.classList.add('toast-it');
    let content = document
        .createTextNode(text);
    toast.appendChild(content);
    toast.style.animationDuration = timeout / 1000 + 's';

    document.body.appendChild(toast);
    setTimeout(
        function () {
        document.body.removeChild(toast);
        }, 
        timeout
    );
};
复制代码
/* toast 提示 */
.toast-box {
    width: 600px;
    position: fixed;
    top: 50px;
    left: 50%;
    transform: translate(-50%, -80%); 
    animation-timing-function: ease-in;
    animation-duration: 3s;  
    animation-delay: 5s; 
    .toast {
        width: 120px;
        color: $color-white;
        padding: 10px 20px;
        text-align: center;
        background: #000;
        opacity: 0.5;
        filter: alpha(opacity = 50);
        margin: 0 auto;
    }
} 
@keyframes TOAST-APPEAR {
    0% {
        max-height: 0;
        top: 0;
        opacity: 0;
        filter: alpha(opacity = 0);
    }
    15% {
        max-height: 60px;
        top: 10px;
        opacity: 1;
        filter: alpha(opacity = 100);
    }
    80% {
        max-height: 60px;
        top: 45px;
    }
    100% {
        max-height: 60px;
        top: 50px;
    }
}
复制代码
  • 11、页面间传值

    localStorage.setItem("user",JSON.stringify(data.allUser)); var user = JSON.parse(localStorage.getItem("user")); localStorage.removeItem("user");

    • 一个id值
    //将id保存在cookie
    $.cookie('doctorId', '11916111-f2eb-11e4-b756-f40669963d49');
    //从cookie中取出id
    var doctorId = $.cookie('doctorId');
    复制代码
    • 多个值
    //将多个值存放在对象中
    var userData = {
        userId: "11916122-f2eb-11e4-b756-f40669963d49",
        patientName: "张丽",
        patientAge: 23,
        patientSex: "F"
    }
    //将这个对象保存在cookie,它的键是对象名称,值为JSON.stirng(),目的是将这个对象解析为字符串,因为cookie的键与值都是字符串
    $.cookie('userData' , JSON.stringify(userData));
    
    var userData = $.cookie('userData');
    if(userData){
        //JSON.parse() 将字符串解析为对象,方便使用
        userData = JSON.parse(userData);
    };
    复制代码
  • 12、IE中发生 line-height 属性的 bug

    发生情况:当在一个标签中套入img,input,textarea,select,object等元素的时候会发生.

    如在body中设置line-height:80px;然后body中<p>有文字有img,有input...这个bug就发生了,在ie下的line-height会缩小了,但在ff和opera是正常的,于是我们为了解决这个办法需要单独给ie设置样式;

    /* 简单的css样式 */
    body {
    	line-height: 80px;
    }
    *html img {
    	margin: 10 0; /* (line-height的高度-img的高度)/2px */
    	vertical-align: center;
    }
    *html input {
    	vertical-align: center;
    }
    复制代码
  • 13、ios自带的上下滑动刷新页面

gearDateTouch.addEventListener('touchmove', function (event) {     
    event.preventDefault();
},false);
复制代码
  • 14、css 解决 iOS 点击时 出现半透明的灰色背景
input, div, p, ul, li, span, textarea {
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
复制代码
  • 15、在通过以下属性实现 tab 左右切换时,ie8 中无法及时渲染,需在切换的事件中,提前给其的任意祖先元素添加类型进行渲染

    javascript$('.debit-note-rise').addClass('ie8-render');

    .note-rise-bar {
        width: 72px;
        height: 25px;
        position: absolute;
        top: 0;
        left: 0;
        line-height: 24px;
        -webkit-transition: left .15s ease-in;
        transition: left .15s ease-in;
        background: url(../img/hotel/note-rise-bg.png) no-repeat;
    }
    .note-rise-parent {
        height: 24px;
    }
    .note-rise-son {
        position: absolute;
        top: 0;
        left: 0;
    }
    .note-rise-parent[data-active-index="1"] .note-rise-bar {
        left: 73px;
    }
    复制代码
  • 16、无论几行数据,都保证垂直方向居中显示

    父元素: display: table; height: 100px;

    子元素: display: table-cell; vertical-algin:middle;

  • 17、jQuery 页面带锚点跳转

    var anchor = true;//初次进入时的锚点定位
    var roomEle = false;//判断房型列表子元素
    var commentEle = false;//判断点评列表子元素
    
        //页面加载 锚点定位
    function anchorPosition(anchor, listEle) {
        if(anchor && listEle) {
            var url = window.location.toString();
            var id = url.split('#')[1];
            //判断url中是否有锚点定位
            if (id) {
                var t = $('#' + id).offset().top;
                $(window).scrollTop(t);
                anchor = false;
            }
        } 
    }
    
    //判断点评列表子元素 页面加载锚点定位
    commentEle = ($('.hotel-detail-discuss .comments-detail > div').length != 0);
    anchorPosition(anchor, commentEle);
    
    //判断房型列表子元素 页面加载锚点定位
    roomEle = ($('#hotel-room-list > ul').length != 0 || $('#hotel-room-list > div').length != 0);  
    anchorPosition(anchor, roomEle);
    
    //清除筛选项模块
    $("#clear-condition").live("click", function () {
            _clearCondition();
        queryRoomList();
        anchor = false;//避免页面再次自动锚点定位
    });
    
    
    var thisID = window.location.hash;
    var mao = $('#hotel-comment');
    if(thisID == '#hotel-comment') {
        var pos = mao.offset().top;
        $('html, body').animate({scrollTop: pos}, 100);
    }
    复制代码
  • 18、 iPhoneX中的安全区域全覆盖,在 meta 标签中添加 viewport-fit=cover

    auto: 默认 viewprot-fit:contain; 页面内容显示在 safe area 内 cover: viewport-fit:cover,页面内容充满屏幕

    当我们设置 viewport-fit:cover 时:设置如下

    body {
        padding-top: constant(safe-area-inset-top);   /* 为导航栏+状态栏的高度 88px */          
        padding-left: constant(safe-area-inset-left);   /* 如果未竖屏时为0 */               
        padding-right: constant(safe-area-inset-right); /* 如果未竖屏时为0 */              
        padding-bottom: constant(safe-area-inset-bottom);/* 为底下圆弧的高度 34px */      
    }
    复制代码
  • 19、在react+typescript中定时器的使用

    private timer: number; TypeScript 在 setTimerOut 中的定义成 number,在 setTimerOut 前添加 window.setTimerOut

  • 20、定时隐藏某元素

    componentDidMount() {
        this.showSaveCover();
    }
      
    showSaveCover() {
        this.setState({
            isWarning: true
        });
        this.hideSaveCover();
    }
    
    hideSaveCover() {
        var self = this;  
        if (this.timer) {
            clearTimeout(this.timer);
        }
        this.timer = setTimeout(() => {
            self.setState({
            isWarning: false
            });
        }, 1000);
        clearTimeout(this.timer);
    }
    复制代码
  • 21、ref 的使用与定义

    detailInfo: HTMLTextAreaElement ref={(input) => { this.detailInfo = input; }} this.detailInfo.focus();

  • 22、渐变色

    /* Safari 5.1 - 6.0 / background: -webkit-linear-gradient(#04091b 50%, #3d4c5b); / Opera 11.6 - 12.0 / background: -o-linear-gradient(#04091b 50%, #3d4c5b); / Firefox 3.6 - 15 / background: -moz-linear-gradient(#04091b 50%, #3d4c5b); / 标准的语法(必须放在最后)*/ background: linear-gradient(#04091b 50%, #3d4c5b);

  • 23、水平垂直居中对齐

    • 方式一
    .parent {
        position: relative;
    }
    .targetElm {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    }
    复制代码
    • 方式二
    .parent {
        position: relative;
    }
    .targetElm {
        position: absolute;
        margin: auto;
        width: 100px;
        height: 50px;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
    }
    复制代码
    • 方式三
    .parent {
        display: table;
        width: 100%;
        height: 50px;
    }
    .son {
        display: table-cell;
        vertical-align: middle;
    }
    复制代码
    • 方式四
    .parent {
        display: flex;
    } 
    .son {
        margin: auto;
    }
    复制代码

    .parent {
        display: flex;
        justify-content: center;
        align-items: center;
    }
    复制代码

    .parent {
        display: flex;
        justify-content: center;
    }
    .son {
        align-self: center;
    }
    复制代码
  • 24、placeholder 颜色

input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
    color: $placeholder;
}

input:-moz-placeholder,
textarea:-moz-placeholder {
    color: $placeholder;
}

input::-moz-placeholder,
textarea::-moz-placeholder {
    color: $placeholder;
}

input:-ms-input-placeholder,
textarea:-ms-input-placeholder {
    color: $placeholder !important;
}
复制代码
  • 25、input 标签 autocomplete 属性

清除 input 框在页面中输入之后产生的历史记录,将 autocomplete 中的默认值 on 改成 off 即可

  • 26、input text select() 方法

select() 方法用于选取文本域中的内容 所有主流浏览器都支持 select() 方法 textObject.select()

选取文本域的内容:

<input type="text" id="copyText" value="需要复制的内容">
<button type="button" onClick="handleClick()">复制</button>
<script>
    function handleClick() {
        document.getElementById("copyText").select();
        document.execCommand('copy');
    }
</script>
复制代码
  • 27、video视频全屏播放

export default {
    // 进入全屏
    launchFullscreen: function(element) {
        //此方法不可以在異步任務中執行,否則火狐無法全屏
        if (element.requestFullscreen) {
            element.requestFullscreen();
        } else if (element.mozRequestFullScreen) {
            element.mozRequestFullScreen();
        } else if (element.msRequestFullscreen) { 
            element.msRequestFullscreen(); 
        } else if (element.oRequestFullscreen) {
            element.oRequestFullscreen();
        }
        else if (element.webkitRequestFullscreen) {
            element.webkitRequestFullScreen();
        } else {
            var docHtml = document.documentElement;
            var docBody = document.body;
            var videobox = document.getElementById('videobox');
            var cssText = 'width:100%;height:100%;overflow:hidden;';

            docHtml.style.cssText = cssText;
            docBody.style.cssText = cssText;
            videobox.style.cssText = cssText + ';' + 'margin:0px;padding:0px;';
            document.IsFullScreen = true;
        }
    },
    // 退出全屏
    exitFullscreen: function(element) {
        if (document.exitFullscreen) {
            document.exitFullscreen();
        } else if (document.msExitFullscreen) {
            document.msExitFullscreen();
        } else if (document.mozCancelFullScreen) {
            document.mozCancelFullScreen();
        } else if (document.oRequestFullscreen) {
            document.oCancelFullScreen();
        }else if (document.webkitExitFullscreen) {
            document.webkitExitFullscreen();
        } else {
            var docHtml = document.documentElement;
            var docBody = document.body;
            var videobox = document.getElementById('videobox');

            docHtml.style.cssText = "";
            docBody.style.cssText = "";
            videobox.style.cssText = "";
            document.IsFullScreen = false;
        }
    }
}
复制代码
  • 28、--save 与 –save-dev 的区别

-save-dev 是指将包信息添加到 devDependencies,表示你开发时依赖的包裹。

-save 是指将包信息添加到 dependencies,表示你发布时依赖的包裹。

例如,我们在开发时会用到 gulp 来压缩我们的文件。这是我们的 gulp 包信息就会添加到 devDependencies,我们在发布时发布压缩文件,并不要用到 gulp。 利用 nodejs 构建的服务器在发布后会经常被访问用到,http包的信息就会添加到 dependencies 区域。

  • 29、vue 中页面导出成图片
<!-- 图表导出 -->
<div class="plOverview-subTitle">
    <span class="chart-export" @click="screenshots()">图表导出</span>        
</div>
<!-- 需要打印的区域 -->
<div class="row" ref="copyCardArea" id="copyCardArea"><div>

import $ from "jquery";
import html2canvas from "html2canvas";

// 页面指定区域导出成图片
screenshots() {
    let b64;
    html2canvas(this.$refs.copyCardArea, {
      	useCORS: true
    }).then(canvas => {
        try {
            b64 = canvas.toDataURL("image/png");
            var triggerDownload = $("#tttt").attr("href", b64).attr("download", "order-1111111111.png");
            triggerDownload[0].click();                    
         } catch (err) {
             alert(err);
          }
          this.imgUrl = b64;
    });
}
复制代码
  • 30、vue 中将页面导成 pdf

htmlToPdf.js

import html2Canvas from 'html2canvas';  
import JsPDF from 'jspdf';  
export default{  
    install (Vue, options) {  
        Vue.prototype.getPdf = function () {  
            var title = this.htmlTitle;  
            html2Canvas(document.querySelector('#pdfDom'), {  
                allowTaint: true  
            }).then(function (canvas) {  
                let contentWidth = canvas.width; 
                let contentHeight = canvas.height;  
                let pageHeight = contentWidth / 592.28 * 841.89;  
                let leftHeight = contentHeight;  
                let position = 0;  
                let imgWidth = 595.28;  
                let imgHeight = 592.28 / contentWidth * contentHeight;  
                let pageData = canvas.toDataURL('image/jpeg', 1.0); 
                let PDF = new JsPDF('', 'pt', 'a4');  
                if (leftHeight < pageHeight) {  
                    PDF.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight);  
                } else {  
                    while (leftHeight > 0) {  
                        PDF.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight); 
                        leftHeight -= pageHeight;  
                        position -= 841.89;  
                        if (leftHeight > 0) {  
                            PDF.addPage();  
                        }  
                    }  
                }  
                PDF.save(title + '.pdf');  
            })  
        }  
    }  

}  
复制代码

Main.js

import htmlToPdf from './htmlToPdf';
Vue.use(htmlToPdf); // 将页面导出成pdf文件

在页面中使用
data: function(){
    return {
    	htmlTitle:"qwerdf",  //这个是pdf文件的名字
}
}
<!-- 图表导出 -->
<div class="plOverview-subTitle">
<span class="chart-export" @click="getPdf()">图表导出</span>        
</div>
<!—页面导出区域 -->
<div class="row" id="pdfDom">
复制代码
  • 31、判断访问终端

    • 方法一:罗列
    var browser = {
        versions: function() {
            var u = navigator.userAgent, app = navigator.appVersion;
    
            return {
                trident: u.indexOf('Trident') > -1, //IE内核
                presto: u.indexOf('Presto') > -1, //opera内核
                webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
                gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,//火狐内核
                mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
                ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android终端
                iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器
                iPad: u.indexOf('iPad') > -1, //是否iPad
                webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
                weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增)
                qq: u.match(/\sQQ/i) == " qq" //是否QQ
            };
        }(),
        language: (navigator.browserLanguage || navigator.language).toLowerCase()
    }
    复制代码
    • 方法二: 简易版本
    if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
        console.log(navigator.userAgent);  
        // window.location.href ="iPhone.html";
    } else if (/(Android)/i.test(navigator.userAgent)) {
        console.log(navigator.userAgent); 
        // window.location.href ="Android.html";
    } else {
        console.log(navigator.userAgent); 
        // window.location.href ="pc.html";
    };
    复制代码
    • 方法三:判断是否手机端访问
    var userAgentInfo = navigator.userAgent.toLowerCase();
    var Agents = ["android", "iphone",
    "symbianos", "windows phone",
    "ipad", "ipod"];
    var ly = document.referrer; // 返回导航到当前网页的超链接所在网页的URL
    for (var v = 0; v < Agents.length; v ++) {
        if (userAgentInfo.indexOf(Agents[v]) >= 0 && (ly == "" || ly == null)) {
            this.location.href='http://m.***.com'; //wap端地址
        }
    }
    复制代码
    • 方法四:iOS或Android客户端
    var u = navigator.userAgent;
    var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; // android终端
    var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios终端
    复制代码
  • 32、手机中某文字字体大小需要小于12px,可将其放大指定大小的两倍,再使用 transform scale 缩放 0.5

    -webkit-transform: scale(0.5); transform: scale(0.5); -webkit-transform-origin: 0 0; transform-origin: 0 0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值