CSS 弹性盒 Flex用法
首先什么是Flex呢?Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。相较于Flex布局,就是传统的盒模型布局了。我们常用的盒模型布局有,display布局,float浮动布局,position定位布局,传统盒模型布局和弹性布局都能解决我们前端开发中的常见布局问题,但是盒模型在处理某些布局就显得特别不方便了。比如,垂直居中问题。Flex:display:flex;首先所有的HTML元素都适用于弹性布局,元素设为弹性布局之后,子元素的float、clear和vertical-align属性将失效。容器和项目容器:采用Flex布局的元素,称为Flex容器(flex container),简称”容器”;项目:“容器”的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目”;容器默认存在两根轴:水平的主轴(main axis 从左至右)和垂直的交叉轴(cross axis 从上至下)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。弹性盒Flex容器属性,即父元素上的属性首先父元素启用弹性盒布局:display:flex;flex-directionflex-wrapflex-flowjustify-contentalign-itemsalign-content1、flex-directionflex-direction:设置主轴的方向。row: (默认值)主轴为水平方向,起点在左端,从左至右排列; row-reverse:主轴为水平方向,起点在右端,从右至左排列; column:主轴为垂直方向,起点在上沿,从上至下排列; column-reverse:主轴为垂直方向,起点在下沿,从下至上排列。nowrap:(默认值)不换行; wrap:换行,第一行在上方; wrap-reverse:换行,第一行在下方。3、flex-flow是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap4、justify-contentjustify-content:设置主轴上的子元素对齐方式。它可能取5个值,具体对齐方式与轴的方向有关。下面假设主轴为从左到右:flex-start:(默认值),左对齐(沿着主轴开始位置至末尾位置对齐); flex-end:右对齐(沿着主轴末尾位置至开始位置对齐); center:居中对齐; space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍; space-between: 两端对齐,项目之间的间隔都相等。 5、align-items定义项目在交叉轴上如何对齐。flex-start:交叉轴的起点对齐; flex-end:交叉轴的终点对齐; center:交叉轴的中点对齐(可以理解为垂直居中); baseline:项目的第一行文字的基线对齐; stretch:(默认值),如果项目未设置高度或设为auto,将占满整个容器的高度。6、align-content上面提到过align-items适用于子元素在单行中使用,这个align-content则就是为了子元素多行的时候设置交叉轴的子元素的排列方式。flex-start:与交叉轴的起点对齐; flex-end:与交叉轴的终点对齐; center:与交叉轴的中点对齐; space-around:根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍; space-between:与交叉轴两端对齐,轴线之间的间隔平均分布; stretch:(默认值),占满整个交叉轴。 项目上的元素属性(即子元素)orderflex-growflex-shrinkflex-basisflexalign-self1、orderorder属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。2、flex-growflex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。.box div { flex-grow: 1 }: 值都为1,则它们将等分剩余空间3、flex-shrinkflex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。4、flex-basisflex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间flex-basis: auto | 350px;5、flexflex属性是flex-grow, flex-shrink 和 flex-basis的合写,默认值为0 1 auto。后两个属性可选。6、align-selfalign-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。align-self: auto | flex-start | flex-end | center | baseline | stretch;举例:多行布局<style> *{ padding:0; margin: 0; } html,body{ width: 100%; height: 100%; } .box{ width: 640px; background: rgb(243, 171, 171); height: 640px; display: flex; flex-wrap: wrap; align-content: space-between; justify-content: space-between; } .boxSon{ background: yellow; width: 200px; height: 200px; } </style> <body> <div class="box"> <div class="boxSon">1</div> <div class="boxSon">2</div> <div class="boxSon">3</div> <div class="boxSon">4</div> <div class="boxSon">5</div> <div class="boxSon">6</div> <div class="boxSon">7</div> <div class="boxSon">8</div> <div class="boxSon">9</div> </div> </body>差不多就到这儿了。
查看详情点赞评论收藏浏览332023-03-26 10:02:04Linux系统修改用户密码
知道一个用户名密码时,修改用户密码,各个版本下都是通用的;重置密码的时候,版本不同,可能操作的地方不一样了;但凡知道一个用户的密码,那就好办。(普通用户登录的情况下,也可以修改root用户的密码。);在不知道账户和密码的情况下比较复杂了,以后有时间再写;linux各系统的命令有部分不同,根据不同系统来。1、知道root用户密码时root用户登录时,运行passwd 命令,可以设置或修改任何用户的密码语法格式:# passwd 用户名2、修改root用户密码在root用户登录的情况下,执行以下指令,进入密码修改界面# passwdpasswd命令后不加用户名,表示修改当前用户的密码输入新密码即可,无需重启Linux系统。3、修改普通用户密码(普通用户账号密码登录时,只能修改自己的密码)# more /etc/passwd 查看当前所有用户,自己创建的用户,在最后# passwd es 更改用户 es 的密码输入新的密码4、知道一个普通用户的账号密码在普通用户登录的情况下,修改root用户密码$ sudo passwd root会要求输入普通用户的密码输入后,会显示“enter new Unix password”这就是修改root用户密码,输入并确认密码后,即成功修改root用户密码修改普通用户自己的密码$ passwd // 进入修改密码界面,输入新密码即可
查看详情点赞评论收藏浏览352023-03-26 10:26:13优美英语句子欣赏(一)
1、不要着急,最好的总会在最不经意的时候出现。Don’t try so hard, the best things come when you least expect them to. 2、拾一片光阴,诉与你听。 Pick up a piece of time to tell you. 3、初听不知曲中意,再听已是曲终人。 I didn't know what I wanted to hear at the beginning, but I was the end of the song.4、好想,好想你!如果清风有情,请带去我对你的思念,这一生都为你牵挂;如果白云有意,请带去我对你的爱恋,生生世世都愿和你共缠绵! Oh, How much I miss you! If the passionate refreshing breeze knows my heart, it can tell you that I miss you and care you for my life’s time. If graceful white cloud knows my heart, it can tell you I love you and would be together with you forever.5、你知道么,有个人时时想念着你,惦记你,你含笑的眼睛,象星光闪闪,缀在我的心幕上,夜夜亮晶晶。 Do you know there is someone thinking of you and caring you all the time ? Your smiling eyes are just like the sparkling stars hanging on the curtain of my heart. 6、那些承诺,你动了嘴巴,我动了真心。Those promises, you moved your mouth, I moved my heart.7、纵使举案齐眉,到底意难平。Even if the case is raised in unison, it is difficult to get even.8、任何限制,都是从自己的内心开始的。Any restriction starts from your heart.9、不怕别人看不起,就怕自己不努力。Dont be afraid of being looked down upon by others, just afraid of not working hard.10、你的眼睛,是我永生不会再遇的海。Your eyes are the sea I will never meet again.11、谁苍白了我的等待,讽刺了我的执着。Who pale my waiting, satirized my persistence.12、把日子过成诗,简单而精致。Make life a poem, simple and delicate.13、向每个人学习,但不要模仿任何人。Learn from everyone, but dont imitate anyone.14、千山万水,一帘烟雨,迷离了眼眸。Thousands of mountains and rivers, a curtain of rain, blurred eyes.15、每个人,都有一个世界,安静而孤独。Everyone has a world, quiet and lonely.16、爱自己是终生浪漫的开始。Love yourself is the beginning of a lifetime of romance.17、小舟从此逝,江海寄余生。The boat is gone, and the river and the sea send the rest of their lives.18、心若一动,泪就千行。If you move your heart, tears will flow.19、我想遇见你,我在找你。I want to meet you. Im looking for you.120、一生,一条路,一个人走,一个人悟。Life, a way, a person to walk, a person to understand.
查看详情点赞评论收藏浏览722023-03-26 14:01:53Laravel 任务调度 ( Console )
在以前, 开发者需要为每一个需要调度的任务编写一个 Cron 条目, 这是很让人头疼的事. 你的任务调度不在源码控制中, 你必须使用 SSH 登录到服务器然后添加这些 Cron 条目. Laravel 命令调度器允许你平滑而又富有表现力地在 Laravel 中定义命令调度, 并且服务器上只需要一个 Cron 条目即可, 任务调度又是我们俗称的 “计划任务”。任务调度定义在app/Console/Kernel.php文件的schedule方法中,该方法中已经包含了一个示例。你可以自由地添加你需要的调度任务到Schedule对象开启调度//在linux环境中执行 * * * * * root php /var/www/laravel/artisan schedule:run/var/www/laravel为你的项目目录该 Cron 将会每分钟调用Laravel命令调度,然后,Laravel评估你的调度任务并运行到期的任务。定义调度在 项目根目录 下创建定时任务所需要进行的操作创建命令(Laravel 5.1):php artisan make:console Stat_Test创建命令(Laravel 5.3):php artisan make:command Stat_Test该操作会在app/Console/Commands下生成一个Stat_Test.php下面打开该文件 给大家展示一个简单而又完整的代码例子 <?php namespace App\Console\Commands; use Illuminate\Console\Command; class Stat_Test extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'stat:test'; /** * The console command description. * * @var string */ protected $description = 'stat:test'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { $this->addData(); } // 例子 public function addData() { $time = time(); $rand = rand(1, 1000); $id = \DB::table('data_test')->insertGetId(['uuid' => $time, 'uuid' => $rand]); if ($id) { \Log::info('定时/数据插入成功', $id); } else { \Log::error('定时/数据插入失败', $time); } } }值得注意的是 这个文件中的 $signature = 'stat:test' 这个签名在 Kernel.php 中也要相应用到, 下面是附上 Kernel.php 的完整代码<?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; class Kernel extends ConsoleKernel { /** * The Artisan commands provided by your application. * * @var array */ protected $commands = [ \App\Console\Commands\Inspire::class, '\App\Console\Commands\Stat_Test', ]; /** * Define the application's command schedule. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { // 为测试方便 每分钟执行一次 $schedule->command('stat:test')->everyMinute(); } }再强调一次 $schedule->command('stat:test') 里面的 stat:test 必须和上面的签名 $signature = 'stat:test' 对应上protected $commands = [ \App\Console\Commands\Inspire::class, '\App\Console\Commands\Stat_Test', ];也要把引入你的调度文件// 每周星期六11:00运行一次... $schedule->command('stat:test')->weekly()->saturdays()->at('11:00'); // 每周星期一:00运行一次... $schedule->command('stat:test')->weekly()->->mondays()->at('01:00');调度常用选项当然,你可以分配多种调度到任务->cron('* * * * *'); 在自定义 Cron 调度上运行任务 ->everyMinute(); 每分钟运行一次任务 ->everyFiveMinutes(); 每五分钟运行一次任务 ->everyTenMinutes(); 每十分钟运行一次任务 ->everyThirtyMinutes(); 每三十分钟运行一次任务 ->hourly(); 每小时运行一次任务 ->daily(); 每天凌晨零点运行任务 ->dailyAt('13:00'); 每天 13:00运行任务 ->twiceDaily(1, 13); 每天 1:00 & 13:00 运行任务 ->weekly(); 每周运行一次任务 ->monthly(); 每月运行一次任务下面是额外的调度约束列表:->weekdays(); 只在工作日运行任务 ->sundays(); 每个星期天运行任务 ->mondays(); 每个星期一运行任务 ->tuesdays(); 每个星期二运行任务 ->wednesdays(); 每个星期三运行任务 ->thursdays(); 每个星期四运行任务 ->fridays(); 每个星期五运行任务 ->saturdays(); 每个星期六运行任务 ->when(Closure); 基于特定测试运行任务原文出处: https://www.jianshu.com/p/91bbdf9ddbf5
查看详情点赞评论收藏浏览312023-03-29 13:46:48html5 页面禁止横屏操作
今天PHP爱好者给大家带来html5禁止横屏的方法:首先打开相应的HTML5代码文件;然后在head区域中添加“<meta name="screen-orientation" content="portrait">”即可禁止html5页面横屏。希望对大家有所帮助。//通用禁止横屏 <meta name="format-detection" content="telephone=no" /> //UC浏览器禁止横屏 <meta name="screen-orientation" content="portrait"> //QQ浏览器禁止横屏 <meta name="x5-orientation" content="portrait"> //JS横屏操作 <script> (function rotate() { var orientation = window.orientation; var pd = null; function createPd() { if (document.getElementById("preventTran") === null) { var imgData = "data:image/png;base64,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"; pd = document.createElement("div"); pd.setAttribute("id", "preventTran"); pd.style.position = "fixed"; pd.style.left = "0"; pd.style.top = "0"; pd.style.width = "100%"; pd.style.height = "100vh"; pd.style.overflow = "hidden"; pd.style.backgroundColor = "#2e2e2e"; pd.style.textAlign = "center"; pd.style.display = "flex"; pd.style.flexDirection = "column"; pd.style.justifyContent = "center"; pd.style.alignItems = "center"; document.getElementsByTagName("body")[0].appendChild(pd); var img = document.createElement("img"); img.src = imgData; pd.appendChild(img); img.style.marginBottom = "0.2rem"; img.style.width = "10%"; var br = document.createElement("br"); var p = document.createElement("p"); p.style.width = "100%"; p.style.height = "auto"; p.style.fontSize = "0.25rem"; p.style.color = "#626262"; p.style.lineHeight = "0.38rem"; p.style.textAlign = "center"; p.innerHTML = "为了您的良好体验"; p.appendChild(br); p.innerHTML += "请将手机/平板竖屏操作"; pd.appendChild(p); } } if (orientation == 90 || orientation == -90) { if (pd == null && document.getElementById("preventTran") === null) createPd(); document.getElementById("preventTran").style.zIndex = "9999"; } //H5新特性 监听用户水平或垂直翻转设备(即方向发生改变) window.onorientationchange = function () { if (pd == null && document.getElementById("preventTran") == null) { createPd(); document.getElementById("preventTran").style.zIndex = "-1"; rotate(); } else { location.reload(); } }; })(); </script>
查看详情点赞评论收藏浏览2562023-03-30 16:34:30安装node-modules包出现的错误解决
安装包出现类似于Running postinstall script... 等错误Progress: resolved 566, reused 524, downloaded 0, added 0, done node_modules/.pnpm/registry.npmmirror.com+pngquant-bin@6.0.1/node_modules/pngquant-bin: Running postinstall script... node_modules/.pnpm/registry.npmmirror.com+gifsicle@5.2.0/node_modules/gif方案1.只需要找到对应的包名重新安装,在xxx.lock.yaml添加对应包名并锁定版本即可方案2.使用cnpm安装包再使用当前包命令安装一次即可,如yarn-lock,使用的yran,先用cnpm再用yarn
查看详情点赞评论收藏浏览1002023-04-11 09:37:58laravel任务调度定时任务时间设置
时间设置举例:$schedule->command(‘CommandTask’)->dailyAt("5:20");->cron(’* * * * * *’); //在自定义的 Cron 时间表上执行该任务 ->everyMinute(); //每分钟执行一次任务 ->everyFiveMinutes(); //每五分钟执行一次任务 ->everyTenMinutes(); //每十分钟执行一次任务 ->everyFifteenMinutes(); //每十五分钟执行一次任务 ->everyThirtyMinutes(); //每半小时执行一次任务 ->hourly(); //每小时执行一次任务 ->hourlyAt(18); //每小时的第 18 分钟执行一次任务 ->daily(); //每天午夜执行一次任务 ->dailyAt('13:00'); //每天的 13:00 执行一次任务 ->twiceDaily(2, 14); //每天的 2:00 和 14:00 分别执行一次任务 ->weekly(); //每周执行一次任务 ->monthly(); //每月执行一次任务 ->monthlyOn(5, '20:00'); //在每个月的第5天的 20:00 执行一次任务 ->quarterly(); //每季度执行一次任务 ->yearly(); //每年执行一次任务 ->timezone('America/New_York'); //设置时区
查看详情点赞评论收藏浏览582023-04-21 11:11:57Linux 安装docker-compose
点赞评论收藏浏览632023-05-11 20:57:31马斯克不明白,为什么有时候中国人对自己的同胞会更狠!
点赞评论收藏浏览1382023-05-15 16:31:38JS 原生 ajax 写法
以下是一个基本的原生AJAX写法:function ajax(method, url, data, success) { var xhr = new XMLHttpRequest(); xhr.open(method, url, true); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { if (xhr.status === 200) { success(xhr.responseText); } else { console.log('Error: ' + xhr.status); } } }; xhr.send(data); } // 调用ajax函数: ajax('POST', '/api/login', JSON.stringify({username: 'user', password: 'password'}), function (res) { console.log(res); });此代码片段演示了使用原生 JavaScript 和 XMLHttpRequest 对象进行 AJAX 请求的基本方法,其中 `ajax()` 表示我们的 AJAX 函数,该函数接受四个参数:请求的方法(GET、POST、PUT 等)、请求URL、请求要发送的数据、请求成功后要运行的回调函数。在这个函数中,我们使用了 JSON 格式的数据,设置 header 的 Content-Type 为 'application/json',并考虑了 readyState 和 status 的情况。最后,我们使用 JSON.parse() 解析响应,这里将响应直接输出到了控制台。这是一个基本模板,你可以根据自己的需要进行修改。
查看详情点赞评论收藏浏览522023-05-17 15:43:18