Web 前端开发者必知的9 个CSS属性

本文介绍了CSS3中的一些高级技巧和应用实例,包括圆角效果、阴影效果、媒体查询、渐变填充、背景尺寸控制、自定义字体、clearfix属性等,这些技巧能够帮助前端开发者和网站设计师更好地提升网站的设计水平。
 CSS可以改进网站的设计并且开拓网站设计更多的可能性,可以令你的网页更具吸引力。对于前端开发者、网站设计师来说,掌握并熟练应用CSS是一项必不可少的技能。 

  下面列出了一些非常实用的CSS3属性和使用技巧,希望能够为你的开发、设计工作带来一些帮助。 

  1、圆角效果

  如今的Web设计在不断跟进最新的开发技术,纷纷采用HTML5来开发多样性的Web应用。HTML5的优势之一,就是之前必须用图片实现的元素,现在可以用代码来实现。“border-radius”是实现这一功能的一个重要的属性,可以用来直接定义HTML元素的圆角,并且被所有现代浏览器支持。

  Css代码

.border-radius: 10px;   
.-moz-border-radius: 10px;    
.-webkit-border-radius: 10px;   
.-khtml-border-radius: 10px;   

想充分了解IE浏览器对CSS3属性支持情况,请看这篇文章

  2、阴影效果

  通过CSS3的box-shadow属性可以非常方便地实现阴影效果。所有主流的浏览器都支持这个属性,其中Safari浏览器支持加前缀的-webkit-box-shadow属性。

  Css代码

#myDiv{
-moz-box-shadow: 20px 10px 7px #ccc;
-webkit-box-shadow: 20px 10px 7px #ccc;
box-shadow: 20px 10px 7px #ccc;
}

  也可以用JavaScript来实现阴影效果,如下:

  Css代码

object.style.boxShadow="20px 10px 7px #ccc"

  3. @media属性

  Media属性用于设置同一样式表在不同屏幕下的样式,可以在属性值中指定应用此样式的介质或媒体。

  Css代码

@media screen and (max-width: 480px){

}

  开发者也可以使用@media print属性指定打印预览的样式:

  Css代码 

@media print
{
   p.content{color:#ccc};
}

  4.渐变填充

  CSS3的Gradient(渐变)属性给了开发者另一个惊人的体验。Gradient还未得到全部浏览器的支持,所以不能完全依赖Gradient来设置布局。

  Css代码 

 background: -webkit-gradient(linear, left top, left bottom, from(darkGray), to(#7A7A7A));

  5. Background size

  Background size是CSS3中最重要的属性之一,已经被很多浏览器支持。Background size属性用于设置背景图像的大小。以前背景图像的大小在样式中是不可调控的,如今使用Background size属性的一行代码就能实现用户想要的背景图像效果。 

  Css代码 

    div    
    {
        background:url(bg.jpg);
        background-size:800px 600px;
        background-repeat:no-repeat;
    }

  6. @font face

  CSS3中的@font face属性对引用字体文件做了很大的改进,该属性主要用于把自定义的Web字体嵌入到网页中。以前由于字体许可的问题,设计者只能使用特定的字体。首先自定义字体的名称:

  Css代码

@font-face
{
font-family: mySmashingFont;
src: url('blitz.ttf')
,url('blitz.eot'); 
}

  然后就可以在任何地方使用mySmashingFont字体系列:

  Css代码

div
{
    font-family:mySmashingFont;
}

  7. clearfix属性

  如果设计师认为Overflow: hidden不能很好的处理浮动,那么clearfix提供了更好的处理浮动的解决方案。

  Css代码

.clearfix {
display: inline-block;
}

 Css代码

.clearfix:after {
content: ".";
display: block;
clear: both;
visibility: hidden;
line-height: 0;
height: 0;
}

8. Margin: 0 auto

 Margin: 0 auto属性是CSS的基础属性。虽然CSS语法并没有定义一个块元素居中的语句,但设计师仍然可以使用auto margin选项来实现这个功能。这个属性可以根据需要居中一个元素。但要注意,需要设计者给div设定宽度才会实现。

Css代码

.myDiv{
margin:0 auto;
width:600px;
}

9. Overflow: hidden

Overflow:Hidden这个CSS属性除了隐藏溢出功能外,还有清除浮动的作用。

Css代码

div
{
  overflow:hidden;
}
<think>我们正在处理关于UniApp无法正常工作的原因和解决方法的问题。根据用户提供的引用,我们可以总结出几个常见的问题点: 1. 跨域问题:在H5模式下需要代理,但在APP和小程序模式下需要完整地址(引用[1])。 2. 调试工具问题:在H5模式下使用vconsole可能导致页面空白,需要在单个页面引入(引用[2])。 3. MQTT连接问题:网络切换或应用状态变化导致MQTT断开,需要监听网络和心跳(引用[3])。 除此之外,UniApp无法正常工作可能还涉及其他原因,如配置错误、API使用不当、平台差异等。下面我们将系统地分析可能的原因并提供解决方法。 ### 常见原因及解决方法 #### 1. 跨域请求问题 - **原因**:在H5开发时,浏览器安全策略会阻止跨域请求。而在APP和小程序环境中,由于没有浏览器的同源策略,但需要完整的URL(包括`http://`或`https://`)。 - **解决方法**: - 在H5模式下,使用代理解决跨域(在`manifest.json`中配置代理): ```json "h5": { "devServer": { "proxy": { "/api": { "target": "http://your-api-domain.com", "changeOrigin": true, "pathRewrite": {"^/api": ""} } } } } ``` - 在APP和小程序环境中,确保请求的URL是完整的: ```javascript // 在uni.request中,根据环境使用完整URL let baseURL; // #ifdef H5 baseURL = &#39;/api&#39;; // 代理前缀 // #endif // #ifdef APP-PLUS || MP-WEIXIN baseURL = &#39;http://your-api-domain.com&#39;; // #endif uni.request({ url: baseURL + &#39;/path/to/api&#39; }); ``` #### 2. 真机调试工具vconsole导致页面空白 - **原因**:在main.js中全局引入vconsole可能导致打包后页面空白。 - **解决方法**:在需要调试的单个页面中引入vconsole,使用renderjs: ```vue <script module="vconsole" lang="renderjs"> import VConsole from &#39;vconsole&#39;; export default { mounted() { new VConsole(); // 初始化vconsole } } </script> ``` #### 3. MQTT连接不稳定 - **原因**:网络切换、应用进入后台或手机熄屏可能导致MQTT连接断开。 - **解决方法**: - 监听网络状态变化,强制重连: ```javascript uni.onNetworkStatusChange((res) => { if (!res.isConnected) { // 断开MQTT连接并提示用户 mqttClient.disconnect(); } else { // 重新连接 mqttClient.reconnect(); } }); ``` - 监听应用状态变化(APP端): ```javascript let mqttClient; // 监听应用进入后台 uni.onAppHide(() => { mqttClient.disconnect(); }); // 监听应用回到前台 uni.onAppShow(() => { mqttClient.reconnect(); }); ``` #### 4. 其他常见问题 - **页面路由问题**:UniApp的页面路由需要遵循规范,在`pages.json`中正确配置页面路径。 - **样式兼容问题**:不同平台(H5、APP、小程序)的样式表现可能不同,使用条件编译处理: ```css /* #ifdef H5 */ .class { color: red; } /* #endif */ ``` - **组件兼容问题**:部分组件在不同平台支持度不同,查阅[UniApp组件文档](https://uniapp.dcloud.net.cn/component/)。 - **API使用问题**:部分API在不同平台的调用方式不同,使用条件编译: ```javascript // #ifdef APP-PLUS plus.someNativeFunction(); // #endif ``` ### 通用排查步骤 1. **查看控制台日志**:在H5端使用浏览器开发者工具,在APP端使用`adb logcat`或UniApp自带的调试工具。 2. **真机调试**:使用真机运行并查看日志。 3. **简化代码**:注释部分代码,逐步定位问题。 4. **查阅文档和社区**:UniApp官方文档和社区论坛(如DCloud问答社区)常有类似问题解答。 ### 总结 UniApp无法正常工作的原因多样,主要集中在跨域、调试工具、网络连接、平台差异等方面。通过条件编译、环境判断和正确配置,大部分问题可以解决。如果问题仍然存在,建议提供具体的错误信息和复现步骤以便进一步排查。 §§相关问题§§ 1. UniApp中如何实现不同平台的条件编译? 2. UniApp应用如何适配不同屏幕尺寸? 3. UniApp如何调用原生插件?</think>### UniApp无法正常工作的原因和解决方法 UniApp无法正常工作通常由以下原因引起,我将结合技术原理和实际案例进行说明: #### 1. **跨域问题(H5模式特有)** - **原因**:浏览器安全策略限制,H5本地调试时需处理跨域 - **解决方法**: ```javascript // manifest.json 配置代理 "h5": { "devServer": { "proxy": { "/api": { "target": "https://your-api-domain.com", "changeOrigin": true, "pathRewrite": {"^/api" : ""} } } } } ``` **注意**:APP和小程序需使用完整URL(含`http://`)[^1] #### 2. **调试工具冲突** - **现象**:引入vconsole后页面空白 - **解决方法**(单页面引入): ```vue <script module="vconsole" lang="renderjs"> import VConsole from &#39;vconsole&#39; export default { mounted() { new VConsole() // 初始化调试面板 } } </script> ``` 避免在main.js全局引入[^2] #### 3. **网络连接异常(MQTT等长连接)** - **原因**:网络切换/应用后台运行导致断开 - **解决方法**: ```javascript // 监听网络状态 uni.onNetworkStatusChange((res) => { if (!res.isConnected) { mqttClient.forceReconnect() // 强制重连 } }) // 监听应用状态 uni.onAppShow(() => { checkMqttHeartbeat() // 恢复心跳检测 }) ``` 需实现心跳检测和自动重连机制[^3] #### 4. **平台兼容性问题** - **常见场景**: - CSS样式在不同平台表现不一致 - API兼容性(如BLE蓝牙在iOS限制) - **解决方案**: ```javascript // 条件编译 // #ifdef H5 h5SpecificMethod() // #endif // 平台API检测 if (uni.getSystemInfoSync().platform === &#39;android&#39;) { androidOnlyFeature() } ``` #### 5. **打包配置错误** - **典型问题**: - 未配置appid(小程序) - 证书错误(Android/iOS签名) - 资源路径错误 - **排查步骤**: 1. 检查`manifest.json`基础配置 2. 验证各平台证书有效期 3. 使用`uni.getSystemInfo`检测运行环境 #### 6. **第三方插件冲突** - **解决方案**: 1. 按需引入插件 2. 检查插件兼容性列表 3. 在`pages.json`中排除非常用组件 #### 调试建议 ```mermaid graph TD A[问题现象] --> B{环境判断} B -->|H5| C[检查跨域配置] B -->|APP| D[检查原生模块] B -->|小程序| E[检查appid配置] C --> F[网络请求分析] D --> G[查看adb日志] E --> H[真机调试] ``` > **最佳实践**:开发阶段开启`"lazyCodeLoading": "requiredComponents"`减少初始化负载,生产环境使用自定义基座调试原生功能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值