JGUI源码:响应式布局简单实现(13)

时间:2022-09-26 22:00:03

首先自我检讨下,一直没有认真研究过响应式布局,有个大致概念响应式就是屏幕缩小了就自动换行或者隐藏显示,就先按自己的理解来闭门造车思考实现过程吧。

1、首先把显示区域分成12等分,bootstrap是这样分的

|1|-|2|-|3|...|12|

2、现在定义不同的大小的盒子用来装物品,假如所在盒子为1024px,盒子内两个矩形A,B都是512px,那么800px下,肯定是显示不完全了,那么就要么让B隐藏,要么让B换行显示。

3、假如定义显示区域 1024时使用 lg 大盒子,lg-1~lg-12占屏幕比例1~12格。那么大盒子的单元格最大大小为1024/12 ~=85px,

下面整理下实现思路:

1、定义外层类为 jgui-box.

2、查询屏幕大小有两种方式一种是@media,另一种使用jquery实现,本文使用jquery。

3、定义lg(>=1024),md(>=480<1024),sm(<480)三种样式前缀

4、当window size change时,修改jgui-box下lg,md,sm元素宽度即可。

首先定义样式,就写三种做测试用,读者自己可以写个循环把1-12的都写出来。

    <style>
.lg-4,.md-6,.sm-12
{
float:left;
}
.jgui-box
{
margin:0 auto
}
</style>
 <div>←←这是测试页面</div>
<div class="jgui-box" style="width:100%">
<div class="lg-4 md-6 sm-12" style="background:brown;color: white">A</div>
<div class="lg-4 md-6 sm-12" style="background:blue;color: white">B</div>
<div class="lg-4 md-12 sm-12" style="background:green;color: white">C</div>
</div>
<script type="text/javascript">
window.onresize = setWidth;
function setWidth ()
{
var width=$('.jgui-box').width();
console.log(width);
if(width>=1024)
{
$('.jgui-box .lg-4').css('width',Math.floor(width/12.0*4));
}
else if(width>=480 && width<1024)
{
$('.jgui-box .md-6').css('width',Math.floor(width/12.0*6)); $('.jgui-box .md-12').css('width',Math.floor(width/12.0*12));
}
else
{
$('.jgui-box .sm-12').css('width',Math.floor(width/12.0*12));
}
};
$(function () { setWidth();
});
</script>

调整浏览器宽度时,显示效果如下

>=1024
JGUI源码:响应式布局简单实现(13)

>=480 && <1024
JGUI源码:响应式布局简单实现(13)

<480
JGUI源码:响应式布局简单实现(13)

昨天做好后,今天测试拖动时发现不能完美填充,主要是多个div宽度计算带有小数点,不能完美的填充box,改成百分比,代码修改如下


function setWidth ()
{
var width=$('.jgui-box').width();
console.log(width);
if(width>=1024)
{
$('.jgui-box .lg-4').css('width',4*100.0/12+'%');
}
else if(width>=480 && width<1024)
{
$('.jgui-box .md-6').css('width',6*100.0/12+'%');
$('.jgui-box .md-12').css('width',12*100.0/12+'%');
}
else
{
$('.jgui-box .sm-12').css('width',12*100.0/12+'%');
}
};
 

JGUI源码:响应式布局简单实现(13)

效果看起来好多了,自动隐藏元素同上,只不过把宽度改为显隐即可,如定义样式sm-hide,在js代码里判断窗口大小在sm时隐藏即可。

<body>
<div>这是测试页面,请调整浏览器大小测试</div>
<div class="jgui-box" style="width:100%">
<div class="lg-4 md-6 sm-12" style="background:brown;color: white">A</div>
<div class="lg-4 md-6 sm-12" style="background:blue;color: white">B</div>
<div class="lg-4 md-12 sm-12 sm-hide" style="background:green;color: white">C</div>
</div>
<script type="text/javascript">
window.onresize = setWidth;
function setWidth ()
{
var width=$('.jgui-box').width();
console.log(width);
if(width>=1024)
{
$('.jgui-box .lg-4').css('width',4*100.0/12+'%').show();
}
else if(width>=480 && width<1024)
{
$('.jgui-box .md-6').css('width',6*100.0/12+'%').show();
$('.jgui-box .md-12').css('width',12*100.0/12+'%').show();
}
else
{
$('.jgui-box .sm-12').css('width',12*100.0/12+'%').show();
$('.jgui-box .sm-hide').hide();
}
};
$(function () { setWidth();
});
</script>
<script type="text/javascript" src="/js/jgui.all.js?v=20190227"></script>
</body>

JGUI源码:响应式布局简单实现(13)

调小后只剩A,B了。后续要需要进行封装完善,把js写进基础库里,界面上直接设置css就可以了,
如此程序就实现了响应式效果两个用的比较多的功能:自动换行和显示隐藏,回头完善下应该也可以使用了。

如果理解的不对请大家指教,程序demo

www.jgui.com

JGUI源码:响应式布局简单实现(13)的更多相关文章

  1. 学习 vue 源码 -- 响应式原理

    概述 由于刚开始学习 vue 源码,而且水平有限,有理解或表述的不对的地方,还请不吝指教. vue 主要通过 Watcher.Dep 和 Observer 三个类来实现响应式视图.另外还有一个 sch ...

  2. bootstrap响应式布局简单实例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  3. JGUI源码:从头开始,建一个自己的UI框架(1)

    开篇 1.JGUI是为了逼迫自己研究底层点的前端技术而做的框架,之前对web底层实现一直没有深入研究,有了技术瓶颈,痛定思痛从头研究, 2.虽然现在vue技术比较火,但还在发展阶段,暂时先使用JQue ...

  4. asp&period;net MVC通用权限管理系统-响应式布局-源码

    一.Angel工作室简单通用权限系统简介 AngelRM(Asp.net MVC Web api)是基于asp.net(C#)MVC+前端bootstrap+ztree+lodash+jquery技术 ...

  5. 一个菜鸟所喜欢用的响应式布局,操作方便简单、时尚简约,适合新手!(一个Dreamweaver cs6生成响应式布局)

    前端开发并不是一个容易的工作,不仅需要掌握HTML.CSS和JavaScript,针对不同的浏览器版本和平台,还需要了解如何设计出跨平台的网站.如今随着响应式设计的流行,前端开发变得越来越困难,且花费 ...

  6. 响应式布局(Responsive layout,RL)的简单Demo

          ★背景:       响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端--而不是为每个终端做一个特定的版本.这个概念是为解决 ...

  7. html自己写响应式布局(说起来很高大上的样子,但是其实很简单)

    第一步,打开电脑中安装的Sublime Text3,新建demo文件夹用来存放文件,在里面新建一个HTML文件,通过Tab快捷键迅速创建一个HTML模板,并命名标题. 第二步,在Body标签里添加三个 ...

  8. 一步步开发自己的博客 &period;NET版 剧终篇(6、响应式布局 和 自定义样式)

    前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做 ...

  9. CSS3与页面布局学习笔记(四)——页面布局大全&lpar;负边距、双飞翼、多栏、弹性、流式、瀑布流、响应式布局&rpar;

    一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能 ...

随机推荐

  1. android-ProgressBar

    制定ProgressBar显示风格 * 参考系统自带的进度条 * ProgressBar分类 * 可以精确显示进度(可以显示刻度和百分比) * 不可以精确显示进度 * 标题上ProgressBar的设 ...

  2. burp suite 使用教程详解(外文翻译转)

    Burp Suite是Web应用程序测试的最佳工具之一,其多种功能可以帮我们执行各种任务.请求的拦截和修改,扫描web应用程序漏洞,以暴力破解登陆表单,执行会话令牌等多种的随机性检查.本文将做一个Bu ...

  3. 多线程编程之Linux环境下的多线程(三)

    前面两篇文章都讲述了Linux环境下的多线程编程基础知识,也附带了典型实例.本文主要比较一下Linux环境与Windows环境下的多线程编程区别. 看待技术问题要瞄准其本质,不管是WIN32.Linu ...

  4. Swift进阶

    概述 访问控制 Swift命名空间 Swift和ObjC互相调用 Swift和ObjC映射关系 Swift调用ObjC ObjC调用Swift 扩展—Swift调用C 反射 扩展—KVO 内存管理 循 ...

  5. 分解XML方法

    分解XML方法 1.DOM生成和解析XML 2.SAX生成和解析XML 3.DOM4J生成和解析XML 4.JDOM生成和解析XML 版权声明:本文博主原创文章.博客,未经同意不得转载.

  6. OCP-1Z0-051-题目解析-第9题

    9. Which statement is true regarding the INTERSECT operator? A. It ignores NULL values. B. Reversing ...

  7. 章节四、1-if条件语句

    package introduction5; public class ConditionalStatement { public static void main(String[] args) { ...

  8. &lbrack;C&plus;&plus; Primer Plus&rsqb; 第7章、函数(一)程序清单——递归,指针和const,指针数组和数组指针,函数和二维数组

    程序清单7.6 #include<iostream> using namespace std; ; int sum_arr(int arr[], int n);//函数声明 void ma ...

  9. LiveCharts文档-3开始-3类型和设置

    原文:LiveCharts文档-3开始-3类型和设置 LiveCharts文档-3开始-3类型和设置 类型和设置 这一部分非常的重要,涉及到LiveCharts的基本构成单元的介绍 LiveChart ...

  10. 平衡树 替罪羊树(Scapegoat Tree)

    替罪羊树(Scapegoat Tree) 入门模板题 洛谷oj P3369 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入xx数 删除xx数(若有多个相同 ...