CSS学习,常用常记(定位Position,Overflow,浮动Float)

  • position 属性指定了元素的定位类型;
  • 元素可以使用的顶部,底部,左侧和右侧属性定位;
  • 然而,这些属性无法工作,除非是先设定position属性;
  • 他们也有不同的工作方式,这取决于定位方法;

static 定位

  • HTML 元素的默认值,即没有定位,遵循正常的文档流对象。
  • 静态定位的元素不会受到 top, bottom, left, right影响。
div.static {
    position: static;
    border: 3px solid #73AD21;
}

fixed 定位

  • 元素的位置相对于浏览器窗口是固定位置;
  • 即使窗口是滚动的它也不会移动;
  • Fixed定位使元素的位置与文档流无关,因此不占据空间。
  • Fixed定位的元素和其他元素重叠。
p.pos_fixed{
	position:fixed;
	top:30px;
	right:5px;
}

relative 定位

  • 相对定位元素的定位是相对其正常位置。
  • 相对定位元素经常被用来作为绝对定位元素的容器块。
h2.pos_left{<!--相对于其正常位置向左移动-->
	position:relative;
	left:-20px;
}
h2.pos_right{<!--相对于其正常位置向右移动-->
	position:relative;
	left:20px;
}
h2.pos_top{
	position:relative;
	top:-50px;
}

absolute 定位

  • 绝对定位的元素的位置相对于最近的已定位父元素;
  • 如果元素没有已定位的父元素,那么它的位置相对于<html>;
  • absolute 定位使元素的位置与文档流无关,因此不占据空间。
  • absolute 定位的元素和其他元素重叠。
h2{
	position:absolute;
	left:100px;
	top:150px;
}

sticky 定位

  • sticky 英文字面意思是粘,粘贴,所以可以把它称之为粘性定位。
  • position: sticky; 基于用户的滚动位置来定位。
  • 粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。
  • 它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed;它会固定在目标位置。
  • 元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。
  • 这个特定阈值指的是 top, right, bottom 或 left 之一,换言之,指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。
  • 注意: Internet Explorer, Edge 15 及更早 IE 版本不支持 sticky 定位。 Safari 需要使用 -webkit- prefix (查看以下实例)。
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8"> 
	<title>菜鸟教程(runoob.com)</title> 
	<style>
		div.sticky {
		  position: -webkit-sticky;
		  position: sticky;
		  top: 0;
		  padding: 5px;
		  background-color: #cae8ca;
		  border: 2px solid #4CAF50;
		}
	</style>
</head>

<body>
	<p>尝试滚动页面。</p>
	<p>注意: IE/Edge 15 及更早 IE 版本不支持 sticky 属性。</p>
	<div class="sticky">我是粘性定位!</div>
	<div style="padding-bottom:2000px">
	  <p>滚动我</p>
	  <p>来回滚动我</p>
	  <p>滚动我</p>
	  <p>来回滚动我</p>
	  <p>滚动我</p>
	  <p>来回滚动我</p>
	</div>
</body>
</html>

重叠的元素

  • 元素的定位与文档流无关,所以它们可以覆盖页面上的其它元素;
  • z-index属性指定了一个元素的堆叠顺序(哪个元素应该放在前面,或后面);
  • 一个元素可以有正数或负数的堆叠顺序;
  • 具有更高堆叠顺序的元素总是在较低的堆叠顺序元素的前面;
  • 注意: 两个定位元素重叠,没有指定z - index,最后定位的元素将被显示在最前面;
img{
	position:absolute;
	left:0px;
	top:0px;
	z-index:-1;
}

裁剪元素

img {
	position:absolute;
    top: 100px;
    left: 100px;
	clip:rect(10px,60px,200px,5px);
}<!--裁减掉上方10px,保留左边60px,保留上边200px,裁减掉左边5px-->
<!--裁剪出的形状为矩形,四条裁剪线(上右下左)对应在图形的原点(左上角)-->

overflow 属性

元素内容超出给定宽度和高度,overflow 属性可以确定是否显示滚动条等行为;

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8"> 
	<title>菜鸟教程(runoob.com)</title> 
	<style>
		div.ex1 {
			background-color: lightblue;
			width: 110px;
			height: 110px;
			overflow: scroll;
		}

		div.ex2 {
			background-color: lightblue;
			width: 110px;
			height: 110px;
			overflow: hidden;
		}

		div.ex3 {
			background-color: lightblue;
			width: 110px;
			height: 110px;
			overflow: auto;
		}

		div.ex4 {
			background-color: lightblue;
			width: 110px;
			height: 110px;
			overflow: visible;
		}
	</style>
</head>
	
<body>
	<h1>overflow 属性</h1>
	<p>如果元素中的内容超出了给定的宽度和高度属性,overflow 属性可以确定是否显示滚动条等行为。</p>

	<h2>overflow: scroll:</h2>
	<div class="ex1">菜鸟教程 -- 学的不仅是技术,更是梦想!!!菜鸟教程 -- 学的不仅是技术,更是梦想!!!菜鸟教程 -- 学的不仅是技术,更是梦想!!!菜鸟教程 -- 学的不仅是技术,更是梦想!!!</div>

	<h2>overflow: hidden:</h2>
	<div class="ex2">菜鸟教程 -- 学的不仅是技术,更是梦想!!!菜鸟教程 -- 学的不仅是技术,更是梦想!!!菜鸟教程 -- 学的不仅是技术,更是梦想!!!菜鸟教程 -- 学的不仅是技术,更是梦想!!!</div>

	<h2>overflow: auto:</h2>
	<div class="ex3">菜鸟教程 -- 学的不仅是技术,更是梦想!!!菜鸟教程 -- 学的不仅是技术,更是梦想!!!菜鸟教程 -- 学的不仅是技术,更是梦想!!!菜鸟教程 -- 学的不仅是技术,更是梦想!!!</div>

	<h2>overflow: visible (默认):</h2>
	<div class="ex4">菜鸟教程 -- 学的不仅是技术,更是梦想!!!菜鸟教程 -- 学的不仅是技术,更是梦想!!!菜鸟教程 -- 学的不仅是技术,更是梦想!!!菜鸟教程 -- 学的不仅是技术,更是梦想!!!</div>
</body>
</html>

更改光标

描述
visible默认值。内容不会被修剪,会呈现在元素框之外。
hidden内容会被修剪,并且其余内容是不可见的。
scroll内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
inherit规定应该从父元素继承 overflow 属性的值。

注意:overflow 属性只工作于指定高度的块元素上。

  • CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。
  • Float(浮动),往往是用于图像,但它在布局时一样非常有用。

元素怎样浮动

  • 元素的水平方向浮动,意味着元素只能左右移动而不能上下移动。
  • 一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
  • 浮动元素之后的元素将围绕它。
  • 浮动元素之前的元素将不会受到影响。
  • 如果图像是右浮动,下面的文本流将环绕在它左边;
img {
	float:right;
}

彼此相邻的浮动元素

如果你把几个浮动的元素放到一起,如果有空间的话,它们将彼此相邻;

.thumbnail {
	float:left;
	width:110px;
	height:90px;
	margin:5px;
}

清除浮动 - 使用 clear

  • 元素浮动之后,周围的元素会重新排列,为了避免这种情况,使用 clear 属性。
  • clear 属性指定元素两侧不能出现浮动元素。
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8"> 
	<title>菜鸟教程(runoob.com)</title> 
	<style>
		.thumbnail {
			float:left;
			width:110px;
			height:90px;
			margin:5px;
		}
		.text_line {
			clear:both;
			margin-bottom:2px;
		}
	</style>
</head>

<body>
	<h3>图片库</h3>
	<p>试着调整窗口,看看当图片没有足够的空间会发生什么。.</p>
	<img class="thumbnail" src="/images/klematis_small.jpg" width="107" height="90">
	<img class="thumbnail" src="/images/klematis2_small.jpg" width="107" height="80">
	<img class="thumbnail" src="/images/klematis3_small.jpg" width="116" height="90">
	<img class="thumbnail" src="/images/klematis4_small.jpg" width="120" height="90">
	<h3 class="text_line">第二行</h3>
	<img class="thumbnail" src="/images/klematis_small.jpg" width="107" height="90">
	<img class="thumbnail" src="/images/klematis2_small.jpg" width="107" height="80">
	<img class="thumbnail" src="/images/klematis3_small.jpg" width="116" height="90">
	<img class="thumbnail" src="/images/klematis4_small.jpg" width="120" height="90">
</body>
</html>

添加边框和边距并浮动到右侧;

img {
	float:right;
	border:1px dotted black;
	margin:0px 0px 15px 20px;
}

标题和图片向右侧浮动;

div{
	float:right;
	width:120px;
	margin:0 0 15px 20px;
	padding:15px;
	border:1px solid black;
	text-align:center;
}

div元素是120像素宽,它包含了图像。 div元素会向右浮动。 Margins 被添加到div使得文本远离div。 Borders和padding被添加到div框架的图片和标题中

让段落的第一个字母浮动到左侧(有点蒙蔽);

使用 float 创建一个网页页眉、页脚、左边的内容和主要内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当然可以,我可以为您提供一个简单的诗词背诵系统的代码示例。以下是一个基于C++的控制台程序,可以随机生成一首唐诗或宋词,然后要求用户输入诗词的朗读内容,再与原文进行比对,最后给出得分。 ```c++ #include <iostream> #include <string> #include <vector> #include <ctime> using namespace std; // 唐诗和宋词的库 vector<string> tang_poems = { "床前明月光,疑是地上霜。", "白日依山尽,黄河入海流。", "静夜思", "登高", "望岳", // ... 这里可以加入更多的唐诗 }; vector<string> song_lyrics = { "苏幕遮·燎沉香", "声声慢·寻寻觅觅", "虞美人·听雨", "如梦令·常记溪亭日暮", "长恨歌·汉皇重色思倾国", // ... 这里可以加入更多的宋词 }; // 获取当前时间(毫秒级别) int get_current_time() { return static_cast<int>(time(nullptr)); } // 随机获取唐诗或宋词 string get_random_poem_or_lyric() { srand(get_current_time()); int rand_index = rand() % 2; // 0表示唐诗,1表示宋词 if (rand_index == 0) { return tang_poems[rand() % tang_poems.size()]; } else { return song_lyrics[rand() % song_lyrics.size()]; } } // 计算用户得分 int calculate_score(const string& original, const string& user_input) { int score = 0; for (size_t i = 0; i < original.size(); i++) { if (i >= user_input.size()) { break; } if (original[i] == user_input[i]) { score++; } } return score; } int main() { // 随机获取一首唐诗或宋词 string original = get_random_poem_or_lyric(); // 输出原文 cout << "请朗读下面的诗词:" << endl; cout << original << endl; // 等待用户输入 string user_input; getline(cin, user_input); // 计算用户得分 int score = calculate_score(original, user_input); cout << "你的得分是:" << score << endl; return 0; } ``` 在这个简单的代码示例中,我们使用了一个包含多个唐诗和宋词的库,然后随机获取其中一首,输出给用户进行朗读。接着,我们等待用户输入,然后计算用户的得分,并输出给用户。 这个代码示例只是一个基础版本,您可以根据自己的需求进行修改和扩展。例如,您可以加入更多的唐诗和宋词,或者设计一个更加复杂的算法来计算用户得分,或者将程序界面化并添加音频播放功能等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hhjian6666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值