"开发路上踩过的坑要一个个填起来————持续更新······(7月30日)"

欢迎转载,请注明出处!

https://gii16.github.io/learnmore/2016/07/29/problem.html

踩过的坑及解决方案记录在此篇博文中!

个人理解,如有偏颇,欢迎指出!

欢迎交流!

3.scss和css的区别

在使用github pages的jekylltheme时,发现有一个scss文件,略感好奇。查了一下,scss文件是css预处理器所产生的中间文件,可通过编译产生css文件。简单说起来就是,程序员觉得CSS只能一行一行的手动添加实在是太麻烦。于是大家约定好,使用一种语言写一个文件,通过该文件可以编译出具体的css文件,比如你在JAVA当中使用for循环执行了10词println,你只需要两行代码就搞定了,但最终运行的时候会输出10行内容。这多出来的八行就不需要你手动去写。

2.移动端CSS3中的contenteditable属性引起的图片删除问题(待解决)

CSS3中提供属性contenteditable,可将DIV变为可编辑的,为自行开发富文本编辑器提供便利。笔者之前在使用一款移动端开源编辑器artEditor(https://github.com/baixuexiyang/artEditor)时,遇到部分安卓机型图片无法删除的问题,即光标在图片后面时,点击删除键,不会删除图片,光标会直接跳到图片前面并删除图片前面的文字。笔者对该问题进行了测试,发现不仅是该编辑器的问题,即使直接使用contenteditable=ture的DIV,使用appendchild(img)方式插入图片,图片也无法删除。
初步预测该问题与不同机型的安卓浏览器内核有关,可能部分厂家对内核进行了二次开发,导致该兼容性问题。该问题尚未解决。

1.CSS3中的transition属性引起的滑动问题

设想你在使用Html+Js+Css进行开发,需要实现一个根据点击位置弹出菜单的功能,之前在移动端的开发中笔者遇到过这个需求,即在手指点击的位置弹出一个菜单。笔者的做法是对菜单DIV设置style="display:none",通过class设置position为fixed,在点击后,获取鼠标位置,对菜单DIV设置style="top:(具体值);left:(具体值);"(当然也可以使用JQuery实现)。
但在具体操作时,发现弹出菜单并不是直接出现在鼠标点击的位置,而是先出现在它原来的位置,然后滑行到鼠标点击的位置,这个方式会暴露菜单前一次所在的位置,用户体验不好。
查阅相关资料后发现是CSS3中新属性transition的设置问题。该属性用于产生一个过渡效果,详情可见W3C:http://www.w3school.com.cn/cssref/pr_transition.asp。想要关闭过渡效果只需要设置transition:none;或者transition-property:none;即可,这里要注意不同浏览器兼容性。
设置后,菜单直接出现,没有滑动效果。

时间: 2024-08-07 06:45:59

"开发路上踩过的坑要一个个填起来————持续更新······(7月30日)"的相关文章

Android 开发中踩过的坑之六:几个关于View的tips

这几个点, 不算是坑, 但是也确实浪费了我一些时间 1.ScrollView的高设置成"wrap_content"会缩的很小,  ScrollView内只允许嵌套一个View, 并且不要将他的高度设置为"wrap_content", 否则它会缩小到很短的样子. ListView也是一样. 2.ListView中的Item如果有不同的样式,最好使用getItemViewType()来区别 事实上, 在ListView的Item完全可以用一种View布局来控制Visia

Android 开发中踩过的坑之十一: 团队协作的坑

工作中,android的坑很多,一部分是android源码自身的逻辑陷阱, 但跟多的是自己和同事们由于种种原因埋下的坑. 提高面向对象的能力,并恰当的实现在代码中,能够极大的减少坑人和被坑几率. 面向对象的最大特征是复用, 复用的目的是减少工作量,减少错误几率,提高工作效率. 总结几个自己的体会,以自勉: 1 在编码前明确代码的模块框架, 定义最简单的接口. 有人也许说, 书生造反,十年不成, 在工期紧张或者其他类似敏捷编程的大背景下, 先干起来才是硬道理. 事实上, 工期紧张也许正是因为之前的

Android 开发中踩过的坑之七:尽量避免使用Acitivity当做Context

这坑容易埋, 却不容易发现. 比如启动一个页面, 需要用到一个单例的工具类Utils, 初始化Utils需要一个Context参数, 直接传入Activity.this. 然后这个单例的Utils就会一直持有Activity.this, 导致整个Acitivity不能被GC. 而如果代码中大量的使用Utils, 又不能确认到底谁最先初始化了Utils, 使得内存泄露成了灵异事件难以发现. 所以, 正确的使用方式是: activity.this.getApplicationContext(); g

Hololens开发初探踩的一些坑

微软官方对HoloLens的开发提供了两种常用方法,使用VS2015和Unity HoloLens专用版本.其中VS方式可以利用通用Windows模版Holographic DX11 App生成框架代码,Unity方式可以导入HoloToolkit这个官方推荐的工具集加速开发. HoloLens运行在Win10系统,其应用程序为UWP App,这种App的权限受到比较大的限制,使用API时务必在Package.appxmanifest或unity设置里申请对应权限.此外,由于HoloLens生态

Android 开发中踩过的坑之八:多进程问题

这是个需要细心处理的坑. 1 内存: 在manifest中可以对各个组件声明其所在的进程: android:process=":name" 然后对应的Acitivity, Receiver, Service就会运行在相应的进程中. 但是有些类会在所有进程中运行, 比如一些Utils工具类, 比如Application类. 当遇到多个进程并行的时候, 厘清进程所对应的代码, 避免在进程A里跑了进程B的代码. 比如有一个工具类Utils_procA. 只需要在进程A中工作, 那对于进程B来

Android 开发中踩过的坑之二: 16ms的UI线程时间才不会卡顿

AndroidUI卡顿, 是总会遇到的问题, 这个坑经常遇到, 通常在优化时才会重点关注. 通常在Adapter.getView()方法中比较突出. 人眼的原因, 1秒24帧的动画才能感到顺畅. 所以每帧的时间大概有41ms多一点点(1000ms/24). 但是但是, 注意了, 这41ms不是全都留给你java代码, 而是所有java native 屏幕等等的, 最后留给我们用java级别发挥的时间, 只有16~17ms了. 所以,当你优化视觉效果时, 留意UI线程的时间, 超过16ms, 就需

那些年,我们在Django web开发中踩过的坑(一)——神奇的‘/’与ajax+iframe上传

一.上传图片并在前端展示 为了避免前端整体刷新,我们采用ajax+iframe(兼容所有浏览器)上传,这样用户上传之后就可以立即看到图片: 上传前: 上传后: 前端部分html: <form style="display: inline-block" id="upload_img_form" name="form" action="/upload/" method="POST" enctype=&qu

Android 开发中踩过的坑之四:低版本使用AsyncTask

这个坑比较隐晦, 一般不容易出现. 有可能在使用AsyncTask时, 明明就是在postResult()方法里设置UI, 却被告知不能在非UI线程设置UI的异常. 这实际上应用App启动时的一个bug. AsyncTask是在初始化的时候, 自己取当前的线程获取Looper. 但是问题来了, 当前线程可能并不是UI线程, 所以就导致了postResult()等原本应该在UI线程工作方法, 实际上在非UI线程. 谷歌在4.1以后版本里解决这个bug, 就是在应用启动时, 在UI线程里先调用了一次

vue高频面试题(面试路上踩过的坑)

### Vue 双向绑定原理 mvvm 双向绑定,采用**数据劫持结合发布者-订阅者模式**的方式,通过 `Object.defineProperty()` 来劫持各个属性的 setter.getter,在数据变动时发布消息给订阅者,触发相应的监听回调. ![双向绑定原理](?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) **几个要点:** 1.实现一个数据监听器 Observer,能够对数据对象的所有属性进行监听,如有变动可拿到最新值并