「人が生きていくうちに、ある人は顔になり、ある人はリジになる。それはすべて時代によって決まる。」 - 「グランド マスター」
リジと顔を再構築する場合、HTML はリジを担当する必要があり、CSS は顔を担当する時が来ました。今回はCSSを可変性と不変性の観点から分析してみます。
面接の質問
まず第一に、これは面接の質問です、第二に、私はとにかくこの面接の質問をしたことがありません、結局、どの工場からの面接の質問だったか忘れてしまいました。
具体的な要件は忘れましたが、一般的な意味は、コンテンツをウィンドウの垂直方向の中央に配置することです。テキストは上部にある場合は上下に拡張する必要があります。下部にさらにテキストがある場合は、下に拡張する必要があります。 サイズは固定されていますが、テキストの量は固定されていません (赤い線は説明を補助するために私が追加したものです)。ここで、テキストは可変要素に属し、画像は固定要素に属します。
思考分析
まず、ここの画像はすべて同じ水平線上にあることがわかり、テキストの量は画像にまったく影響を与えないため、考えられる解決策は 2 つあります。テキストの通常のドキュメント フローと画像の絶対配置。2 番目のタイプのテキストは絶対的に配置され、画像はドキュメント内で通常どおりに配置されます。
第二に、上のテキストの拡張方向が上向きであるため、通常のドキュメントの流れの方向に違反しています(通常、テキストが増加するにつれて下に拡張するはずです)。そのため、上のテキスト部分は絶対に配置する必要があると結論付けることができます。一番下の値
最後に、上記の 2 つの理由に基づいて、テキストの絶対位置と画像の通常のドキュメント フローを使用して、最初に 2 番目の解決策を使用してテストします。
ここでは、前の記事の逆アセンブリの考え方を使用して、次のような HTML 構造を取得します:
ul.demo li .text-top img.img-center .text-bottom
メインの CSS コードは次のとおりです:
.demo{ position:absolute; top: 50%; } .demo li{ float: left; width: 120px; margin: 0 20px; position: relative; } .text-top{ position: absolute; bottom: 90px; left: 0; } .img-center{ margin-top: -34px; width: 120px; height: 68px; } .text-bottom{ position: absolute; top: 50px; }
一般的な例
コンテンツの流体レイアウト
ここで選択しますサイドバーは固定され、コンテンツは残りの幅の流動的なレイアウトになります。サイドバーは固定要素であり、コンテンツは変動要素です。
section.section-main .inner-center.clearfix .main>.content aside.aside-rightrree
グラフィックとテキストの混合
一般的に、画像の幅は固定されていますが、テキスト部分の幅は設定されていません。固定係数は画像の幅、可変係数はテキストの幅です。
.main{ float: left; width: 100%; } .main .content{ margin-right: 320px; } .aside-right{ float: left; width: 300px; margin-left: -320px; }rree
コンテナの幅は可変ですが、アスペクト比は一定です
詳しくは、CSSでコンテナを比例的に拡大縮小する方法を参照してください。ここでは詳細は説明しません。定数要素はアスペクト比です。 、変動要因は幅です。
モバイル端末では可変および不変
モバイル端末の再構築を始めたばかりの多くの人は、通常、モバイル端末はすべてパーセンテージを使用するのかという質問をします。実際、rem、vw、vh などの新しい単位とは別に、パーセンテージに加えて、px もモバイル端末で使用できます。これは、まったく考えられていません。どの単位を使うか、最も重要なことは可変と不変を把握することです。よく理解すれば、モバイル端末の再構築も実はPCと同じです。もちろん、PC で幅と高さを固定に設定することに慣れている場合は、おそらくイライラするでしょう。
全画面画像スクロール
全画面、vw がまだ使用できない場合は、100% にする必要があります (ここでの全画面とは、高さを除いた幅が画面全体をカバーすることを意味します)。
.imgtext-mix a.mix-img-link>img.mix-img .mix-text h3.mix-tt>a.mix-tt-link .mix-intro
.mix-img-link{ float: left; width: 200px; margin-right: 20px; } .mix-text{ overflow: hidden; }
写真とテキストの混合リスト
相変わらず写真とテキストの混合配置ですが、笑、PCの場合は、右側の変数テキストを無視して直接幅を設定できるかもしれませんが、モバイル端末の場合は、申し訳ありませんが、この変動要因を考慮する必要があります。
这个估计90%的移动端都有这个效果,当然不可能设计给你的是375px的稿子,然后你就做了个375px宽度的效果。但是如果按照设计稿的比例,然后设置图片和宽度的百分比呢,这种情况图片宽度的改变,当然会影响图片高度的改变(如果是固定的高度那图片估计就没法看了,各种被拉伸或是变形),而图片高度的改变就会影响整体行的改变,那估计拿着不同的手机,看到的右边的文字内容或高或低也是醉了。
百分比效果大概如下图:
所以这里一般设计的是图片固定大小不变,右边文字可变,占满其余空间。实现跟上面的图文混排一样,当然技术上可以使用很多方法如flex,absolute,float等
单行列表
同样单行列表,标题因为长度不一属于可变因子,不宜直接控制其宽度。而右侧的一些按钮或辅助信息相对来说使用绝对定位在右边比较合理。
ul.line-list li p.title+i.icon-xxx
.line-list li{ position: relative; padding-right: 40px; line-height: 40px; } .line-list li .icon-xxx{ position: absolute; right: 10px; top: 50%; tranform: translate(0, -50%); } // 如果文字比较长,需要做超出省略截断 .line-list li .title{ padding-left: 10px; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; }
等分
这里的等分指水平的等分,可以使用的技术有flex,float,table-cell等,其中float应该是最low的,因为你必须要设置item的宽度,三等分设置33.33%,四等分设置25%等,这种重复利用性太low,已经不适合更高级的移动端了,所以flex和table-cell是不错的选择,根本不需要在意item的个数(当然得确定一行能显示下,显示不下那也是悲催)。所以这种情况下连单位都是多余的。
ul.equal-list li*n
// flex .equal-list{ display: flex; } .equal-list li{ flex: 1; } // table-cell .equal-list{ display: table; table-layout: fixed; width: 100%; } .equal-list li{ display: table-cell; }
translate
translate中使用的百分比单位是针对自己宽高的百分比,所以对于未知宽高的计算来说,是非常大的优势,尤其用在水平和垂直居中上。
.center-translate{ position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); }
当然这些变与可变的还有很多,总之,在移动端的可变因子比pc上更多,更多的对宽度或高度的不确定,就需要各种方法去避免直接设置死宽度或高度,当然庆幸的是,css3的支持让这些不确定因素的控制变得趋向简单。
变与不变之道
最后不管是移动端还是pc端,对于动不动就设置一个具体width或height的方式注定可扩展性欠缺。所以尤其是在做通用组件的时候,一定要进一步深挖掘,了解更多的使用场景,每个场景的一些特殊特征,甚至于对未来的修改都有可预见性。
可能这里说得更多的是宽度方面的控制,其实对于方法的选择也一样,同一种效果,可能有很多方法去实现,而每种方法都有各自的利弊,所以也要根据实际情况去灵活变通使用,这同样也属于可变的。如果你所有的都是一刀切,那就是固定的一个思维了,无所谓变通了。
如果从一个更高的角度来说,没有什么是恒定的不变,一切皆可变。也许这个站点的不可变,到了那个站点就得变,所以拒绝教条主义,一切从实际情况出发,根据需求分析,得出一个合理的实践。

在css中,可用list-style-type属性来去掉ul的圆点标记,语法为“ul{list-style-type:none}”;list-style-type属性可设置列表项标记的类型,当值为“none”可不定义标记,也可去除已有标记。

区别是:css是层叠样式表单,是将样式信息与网页内容分离的一种标记语言,主要用来设计网页的样式,还可以对网页各元素进行格式化;xml是可扩展标记语言,是一种数据存储语言,用于使用简单的标记描述数据,将文档分成许多部件并对这些部件加以标识。

在css中,可以利用cursor属性实现鼠标隐藏效果,该属性用于定义鼠标指针放在一个元素边界范围内时所用的光标形状,当属性值设置为none时,就可以实现鼠标隐藏效果,语法为“元素{cursor:none}”。

在css中,rtl是“right-to-left”的缩写,是从右往左的意思,指的是内联内容从右往左依次排布,是direction属性的一个属性值;该属性规定了文本的方向和书写方向,语法为“元素{direction:rtl}”。

转换方法:1、给英文元素添加“text-transform: uppercase;”样式,可将所有的英文字母都变成大写;2、给英文元素添加“text-transform:capitalize;”样式,可将英文文本中每个单词的首字母变为大写。

在css中,可以利用“font-style”属性设置i元素不是斜体样式,该属性用于指定文本的字体样式,当属性值设置为“normal”时,会显示元素的标准字体样式,语法为“i元素{font-style:normal}”。

在css3中,可以用“transform-origin”属性设置rotate的旋转中心点,该属性可更改转换元素的位置,第一个参数设置x轴的旋转位置,第二个参数设置y轴旋转位置,语法为“transform-origin:x轴位置 y轴位置”。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
