• 关于 height 的搜索结果

回答

一方面,CSS样式修改是渲染中的一种高成本操作,所以浏览器一般会缓存渲染树的更新。但有的情况则不会缓存,比如: 1.调整窗口大小和修改页面默认字体 2.client/offset/scroll(比如访问 node.clientWidth 属性) 3.getComputedStyle() currentStyle 另一方面,setTimeout 是要等执行线程空闲的时候才会触发的。 以上是原理。下面看问题: 假设没有 setTimeout,效果成了: // 立即重排 var height = window.getComputedStyle(element).height; // 缓存之 element.style.height = "auto"; // 立即重排 var targetHeight = window.getComputedStyle(element).height; // 下面开始重点: // 缓存之 element.style.height = height; // 缓存之 if (time) element.style.transition = "height "+ time +"ms"; // 缓存之 element.style.height = targetHeight; // 渲染 结果就是,根本不会渲染高度为 height,而是直接渲染成 targetHeight。我们想要的结果是从 height 到 targetHeight 的过渡。 那有了 setTimeout,效果就是酱紫的了: // 缓存之 element.style.height = height; // 空闲了才干 setTimeout(function() { if (time) element.style.transition = "height "+ time +"ms"; element.style.height = targetHeight; }, 15); // 立即重排 喏喏,浏览器得先重排高度为 height 才闲下来,而一闲下来才要求重排到 targetHeight,这才会产生过渡效果

杨冬芳 2019-12-02 02:34:45 0 浏览量 回答数 0

回答

一方面,CSS样式修改是渲染中的一种高成本操作,所以浏览器一般会缓存渲染树的更新。但有的情况则不会缓存,比如: 1.调整窗口大小和修改页面默认字体 2.client/offset/scroll(比如访问 node.clientWidth 属性) 3.getComputedStyle() currentStyle 另一方面,setTimeout 是要等执行线程空闲的时候才会触发的。 以上是原理。下面看问题: 假设没有 setTimeout,效果成了: // 立即重排 var height = window.getComputedStyle(element).height; // 缓存之 element.style.height = "auto"; // 立即重排 var targetHeight = window.getComputedStyle(element).height; // 下面开始重点: // 缓存之 element.style.height = height; // 缓存之 if (time) element.style.transition = "height "+ time +"ms"; // 缓存之 element.style.height = targetHeight; // 渲染 结果就是,根本不会渲染高度为 height,而是直接渲染成 targetHeight。我们想要的结果是从 height 到 targetHeight 的过渡。 那有了 setTimeout,效果就是酱紫的了: // 缓存之 element.style.height = height; // 空闲了才干 setTimeout(function() { if (time) element.style.transition = "height "+ time +"ms"; element.style.height = targetHeight; }, 15); // 立即重排 喏喏,浏览器得先重排高度为 height 才闲下来,而一闲下来才要求重排到 targetHeight,这才会产生过渡效果。

杨冬芳 2019-12-02 02:52:59 0 浏览量 回答数 0

回答

如果要所有运算都在客户端通过js完成,目前只有html5的canvas和file api才能满足你的需要。但是对国内用户来说,支持html5的浏览器普及率还不够高。 新浪微博的图片上传使用的是图片上传后然后,再在服务器端压缩的方法,实际上这种方式的消耗也很少。目前普遍上使用的都是这种方式,因为只需要在上传的时候压缩一次。 <script language="JavaScript" type="text/javascript"> function DrawImage(ImgD,FitWidth,FitHeight) { var image=new Image(); image.src=ImgD.src; if(image.width>0 && image.height>0) { if(image.width>FitWidth) { ImgD.width=FitWidth; ImgD.height=(image.height*FitWidth)/image.width; if(ImgD.height>FitHeight) { ImgD.height=FitHeight; ImgD.width=(image.width*FitHeight)/image.height; } } else if(image.height>FitHeight) { ImgD.height=FitHeight; ImgD.width=(image.width*FitHeight)/image.height; if(image.width>FitWidth) { ImgD.width=FitWidth; ImgD.height=(image.height*FitWidth)/image.width; } } else { ImgD.width=image.width; ImgD.height=image.height; } } } </script>

a123456678 2019-12-02 02:04:00 0 浏览量 回答数 0

试用中心

为您提供0门槛上云实践机会,企业用户最高免费12个月

回答

$(window).load(function(){ var max_height=0; $('.box').each(function(){ if( $(this).height() > max_height ){ max_height= $(this).height(); }; }) $('.box').css("height",max_height); });

a123456678 2019-12-02 03:08:42 0 浏览量 回答数 0

回答

因为div1的height比dive2的line-height大。比如div1的height是20px,这时如果div2的line-height为19px,一行是围绕不满div1的。就又围绕了一行。你可以试试改变他们的height和line-height。

a123456678 2019-12-02 02:25:42 0 浏览量 回答数 0

回答

var height = $(window).height(), //window.innerHeightwidth = $(window).width();//window.innerWidth$("ElemtId").css({"height":height},{"width":width});//document.getElementById(id).style.height=height

a123456678 2019-12-02 02:21:35 0 浏览量 回答数 0

回答

var height = $(window).height(), //window.innerHeight width = $(window).width();//window.innerWidth $("ElemtId").css({"height":height},{"width":width});//document.getElementById(id).style.height=height

小旋风柴进 2019-12-02 02:19:32 0 浏览量 回答数 0

回答

private static final int textBracketMaxHeight = ViewTools.dip2px(20); private static final int textBracketMaxWidth = ViewTools.dip2px(10); public static void drawLeftBracketPng(Canvas canvas, int x, int y, int height){ Bitmap btp; if (height > textBracketMaxHeight) { btp = ViewTools.zoom(leftBracketPng, textBracketMaxWidth, height); }else{ float scale = (float)height/leftBracketPng.getHeight(); btp = ViewTools.zoom(leftBracketPng, scale, scale); } canvas.drawBitmap(btp, x, y, new Paint()); } public static void drawRightBracketPng(Canvas canvas, int x, int y, int height){ Bitmap btp; if (height > textBracketMaxHeight) { btp = ViewTools.zoom(rightBracketPng, textBracketMaxWidth, height); }else{ float scale = (float)height/rightBracketPng.getHeight(); btp = ViewTools.zoom(rightBracketPng, scale, scale); } canvas.drawBitmap(btp, x, y, new Paint()); }

蛮大人123 2019-12-02 02:33:44 0 浏览量 回答数 0

问题

设置了max-height和height的优先级问题

杨冬芳 2019-12-01 19:36:19 780 浏览量 回答数 1

问题

java 怎么配置xml将图片链接换到xml里去

蛮大人123 2019-12-01 19:40:26 1256 浏览量 回答数 1

问题

jquery 取$(window).height()不准,如何解决?

a123456678 2019-12-01 20:24:11 845 浏览量 回答数 1

回答

我觉得line-height就是一个类似行间距的属性,不影响文字的大小,但是会影响到文字的排列。对于外界来说,含有文字的元素(比如p,div之类的)的高度就是(文字的行数 - 1) * line-height的值(应该是这样,我是实验发现的)。关于单位,楼上已经讲得很清楚了,默认是em(比如,font-size=24px时,1em=24px,1.5em=36px,2em=48px,以此类推),当然也可以设置成px、cm一类的绝对单位。Edit改正一下,line-height不是行间距,而是行高,即一行文字所占的高度,文字元素的高度应该为文字的行数 * line-height。其实(我认为)元素的高度和font-size是无关的,它和line-height有关。由于line-height默认值是1em,所以文字大小越大,元素高度越大。但是设置了line-height之后,元素的高度就和文字大小无关了,只和设置的line-height和文字的行数有关。

a123456678 2019-12-02 02:23:37 0 浏览量 回答数 0

回答

这个问题,难道没有人遇到过吗? 如果相机出错会在<spanstyle="line-height:1.5;font-size:10pt;">Camera<spanstyle="line-height:1.5;font-size:10pt;">.<spanstyle="line-height:1.5;font-size:10pt;">open<spanstyle="line-height:1.5;font-size:10pt;">(<spanstyle="line-height:1.5;font-size:10pt;">id<spanstyle="line-height:1.5;font-size:10pt;">)<spanstyle="line-height:1.5;font-size:10pt;">的时候出现异常吧,在这句上加trycatch试试面部识别,发现无法识别直接蜂鸣提示<divclass='ref'> 引用来自“os_jason”的评论 如果相机出错会在<spanstyle="line-height:1.5;font-size:10pt;">Camera<spanstyle="line-height:1.5;font-size:10pt;">.<spanstyle="line-height:1.5;font-size:10pt;">open<spanstyle="line-height:1.5;font-size:10pt;">(<spanstyle="line-height:1.5;font-size:10pt;">id<spanstyle="line-height:1.5;font-size:10pt;">)<spanstyle="line-height:1.5;font-size:10pt;">的时候出现异常吧,在这句上加trycatch试试

爱吃鱼的程序员 2020-06-12 15:35:44 0 浏览量 回答数 0

回答

前一种是使用初始化列表,后一种是在构造函数中进行赋值。 先看简单类成员的初始化: class Animal { public: Animal(int weight,int height): //A初始化列表 m_weight (weight), m_height (height) { } Animal(int weight,int height) //B函数体内初始化 { m_weight = weight; m_height = height; } private: int m_weight ; int m_height ; }; 列表初始化和函数体内进行初始化都很简单,而且效率上也差不多(当然,上面只是为了说明问题而写的代码,上面两种方式是不能共存的)。 再看看继承关系中的构造函数: class Animal { public: Animal(int weight,int height): //没有提供无参的构造函数 m_weight (weight), m_height (height) { } private: int m_weight ; int m_height ; }; class Dog: public Animal { public: Dog(int weight,int height,int type) //error 构造函数 父类Animal无合适构造函数 { } private: int m_type ; }; 在这里可以看到,下面那种方法是错误的,这是因为在继承的时候,是先调用父类的构造函数,再调用子类的构造函数。但是发现父类没有默认的构造函数,因此会出错。 所以我们正确的做法是: class Dog: public Animal { public: Dog(int weight,int height,int type): Animal (weight, height) //必须使用初始化列表增加对父类的初始化 { } private: int m_type ; }; const成员必须在初始化列表中初始化 很简单,const成员是不可以修改的,因此只可以在初始化列表中进行初始化。 class Dog: public Animal { public: Dog(int weight,int height,int type): Animal (weight, height), LEGS (4) //必须在初始化列表中初始化 { //LEGS = 4; //error } private: int m_type ; const int LEGS; }; 自定义成员在初始列表中进行初始化时将大大提升效率 class Food { public: Food(int type = 10) { m_type = 10 ; } Food(Food &other) //拷贝构造函数 { m_type = other. m_type; } Food & operator =( Food &other ) // 重载赋值=函数 { m_type = other. m_type; return * this; } private: int m_type ; }; 构造函数赋值方式 初始化成员对象m_food class Dog: public Animal { public: Dog(Food &food) { m_food = food; //初始化 成员对象 } private: Food m_food; }; 如果采用上面的方式,那么实际上会先执行对象类型构造函数 Food(int type = 10),然后执行对象类型构造函数 Food & operator =(Food &other)。 Think about why... 构造函数初始化列表方式 class Dog: public Animal { public: Dog(Food &food) :m_food (food) //初始化 成员对象 { //m_food = food; } private: Food m_food; };

a123456678 2019-12-02 02:01:48 0 浏览量 回答数 0

问题

Android弹出软键盘时底部菜单与ScrollView冲突的问题

蛮大人123 2019-12-01 20:02:31 1268 浏览量 回答数 1

回答

用css吧直接写width和height,比如显示3行,那就height: 48px; line-height: 16px;也就是说height应该是line-height的行数倍。超出时如果不需要滚动条,可用overflow: hidden; 默认为auto自动。另外chrome中textarea可以用鼠标拖动右下角改变大小,想屏蔽可以用resize: none;

小旋风柴进 2019-12-02 02:18:37 0 浏览量 回答数 0

回答

[算法]通过迭代从上到下的行来工作,对于解决该问题的每一行,其中“直方图”中的“条”由从当前行开始的所有零连续向上的零尾组成(一列的高度为0 (如果当前行中有1)。 输入矩阵mat可以是任意可迭代的,例如文件或网络流。一次只需要一行。 #!/usr/bin/env python from collections import namedtuple from operator import mul Info = namedtuple('Info', 'start height') def max_size(mat, value=0): """Find height, width of the largest rectangle containing all value's.""" it = iter(mat) hist = [(el==value) for el in next(it, [])] max_size = max_rectangle_size(hist) for row in it: hist = [(1+h) if el == value else 0 for h, el in zip(hist, row)] max_size = max(max_size, max_rectangle_size(hist), key=area) return max_size def max_rectangle_size(histogram): """Find height, width of the largest rectangle that fits entirely under the histogram. """ stack = [] top = lambda: stack[-1] max_size = (0, 0) # height, width of the largest rectangle pos = 0 # current position in the histogram for pos, height in enumerate(histogram): start = pos # position where rectangle starts while True: if not stack or height > top().height: stack.append(Info(start, height)) # push elif stack and height < top().height: max_size = max(max_size, (top().height, (pos - top().start)), key=area) start, _ = stack.pop() continue break # height == top().height goes here pos += 1 for start, height in stack: max_size = max(max_size, (height, (pos - start)), key=area) return max_size def area(size): return reduce(mul, size) 解为O(N),其中N是矩阵中元素的数量。它需要O(ncols)额外的内存,这里ncols是矩阵中的列数。

保持可爱mmm 2020-02-08 20:16:34 0 浏览量 回答数 0

回答

button标签在标准浏览器是submit按钮,你的表单被提交了,要用type="button"或者阻止表单提交 $(".smalle").click(function () { if ($comment.height() > 50) { $comment.height($comment.height() - 50); } return false;////////// }); $(".big").click(function () { if ($comment.height() < 500) { $comment.height($comment.height() + 50); } return false;/////////// });

吴孟桥 2019-12-02 02:29:36 0 浏览量 回答数 0

回答

用JS来动态设置CSS样式,常见的有以下几种直接设置style的属性 某些情况用这个设置 !important值无效如果属性有'-'号,就写成驼峰的形式(如textAlign) 如果想保留 - 号,就中括号的形式 element.style['text-align'] = '100px';element.style.height = '100px';直接设置属性(只能用于某些属性,相关样式会自动识别)element.setAttribute('height', 100);element.setAttribute('height', '100px');设置style的属性element.setAttribute('style', 'height: 100px !important');使用setProperty 如果要设置!important,推荐用这种方法设置第三个参数element.style.setProperty('height', '300px', 'important');改变class 比如JQ的更改class相关方法因JS获取不到css的伪元素,所以可以通过改变伪元素父级的class来动态更改伪元素的样式element.className = 'blue';element.className += 'blue fb';设置cssTextelement.style.cssText = 'height: 100px !important';element.style.cssText += 'height: 100px !important';创建引入新的css样式文件 function addNewStyle(newStyle) { var styleElement = document.getElementById('styles_js'); if (!styleElement) { styleElement = document.createElement('style'); styleElement.type = 'text/css'; styleElement.id = 'styles_js'; document.getElementsByTagName('head')[0].appendChild(styleElement); } styleElement.appendChild(document.createTextNode(newStyle)); } addNewStyle('.box {height: 100px !important;}'); 使用addRule、insertRule// 在原有样式操作 document.styleSheets[0].addRule('.box', 'height: 100px'); document.styleSheets[0].insertRule('.box {height: 100px}', 0); // 或者插入新样式时操作 var styleEl = document.createElement('style'), styleSheet = styleEl.sheet; styleSheet.addRule('.box', 'height: 100px'); styleSheet.insertRule('.box {height: 100px}', 0); document.head.appendChild(styleEl); ps:来源网络

元芳啊 2019-12-02 00:54:56 0 浏览量 回答数 0

回答

<style> div{ transform: rotate(180deg);//旋转外层DIV 180°使SVG伸缩方向上下颠倒 transform-origin: 50% 50%; display: inline-block; } g.rect_group rect{ transition: all 0.1s ease;//定义SVG变换时间 } </style> <body> <script src="http://cdn.bootcss.com/jquery/1.12.3/jquery.js"></script> <div> <svg height="300" width="300"> <g class="rect_group" fill="#B9D6E8">//SVG组 <rect height="100" width="20"/> <rect x="25" height="100" width="20"/> <rect x="50" height="100" width="20"/> <rect x="75" height="100" width="20"/> <rect x="100" height="100" width="20"/> </g> Sorry, your browser does not support inline SVG. </svg> <div> <script type="text/javascript"> $(document).ready(function(){ var randomHeight=function($ele){ $ele.data("this_height",$ele.attr("height"));//写入原高度到元素的.data对象 $ele.attr("height",Math.floor((Math.random()+0.5)*parseInt($ele.data("this_height"))));//随机伸长/缩短 setTimeout(function(){ $ele.attr("height",$ele.data("this_height")); },100);//100ms后恢复原状 } $(".rect_group rect").on("mouseover",function(){//注册时间 randomHeight($(this)); }); }) </script> </body>

a123456678 2019-12-02 02:09:45 0 浏览量 回答数 0

问题

【今日算法】4月27日-接雨水问题

游客ih62co2qqq5ww 2020-04-28 10:14:02 70 浏览量 回答数 1

问题

为什么在使用嵌套查询时不能引用用户定义的类型字段?

保持可爱mmm 2019-12-01 21:59:51 7 浏览量 回答数 1

问题

网页中的SVG元素无法绑定jQuery事件?

a123456678 2019-12-01 20:20:47 1643 浏览量 回答数 1

回答

<span style="line-height: 23.0400009155273px;">使用的主机名称:共享</span><br style="line-height: 23.0400009155273px;"><span style="line-height: 23.0400009155273px;">网站名称:56信息网</span><br style="line-height: 23.0400009155273px;"><span style="line-height: 23.0400009155273px;">网站地址:www.56ki.cn</span><br style="line-height: 23.0400009155273px;"><span style="line-height: 23.0400009155273px;">网站描述(非必填):发布信息供求</span><br style="line-height: 23.0400009155273px;"><span style="line-height: 23.0400009155273px;"></span>

56ki.cn 2019-12-02 01:15:14 0 浏览量 回答数 0

问题

IE 中new Image()不能加载成功,求指教?报错

爱吃鱼的程序员 2020-06-20 17:10:35 0 浏览量 回答数 1

问题

给html,body设置min-height 没有作用?

杨冬芳 2019-12-01 19:43:18 1021 浏览量 回答数 1

回答

jquery插件整上 $(window).resize()------监控浏览器窗口改变事件,一旦改变立即触发 $().height()--------------获取对象高度(不带单位) $().css("height")--------获取对象高度带单位(例:400px) 上面的朋友写了,我只是详细的解释下 方法一、 $(window).resize(function(){ $(".left").height($(".right").height()); }); 方法二、 $(window).resize(function(){ $(".left").css({"height":$(".right").css("height")}

a123456678 2019-12-02 03:08:43 0 浏览量 回答数 0

回答

用一个黑色的底做透明度渐变动画,同时底部放按钮的视图做位移动画就可以了。 另外我建议楼主把翻页控件的贴结了~ .h: #import <UIKit/UIKit.h> @class YXPActionSheet; @protocol YXPActionSheetDelegate <NSObject> @optional - (void)actionSheet:(YXPActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex buttonTitle:(NSString *)title; @end @interface YXPActionSheet : UIView + (YXPActionSheet *)actionSheetWithCancelButtonTitle:(NSString *)cancelTitle destructiveButtonTitle:(NSString *)destructiveButtonTitle otherButtonTitles:(id)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION; @property (nonatomic,assign) id<YXPActionSheetDelegate> delegate; - (void)showInView:(UIView *)view; - (void)showInWindow; - (void)showInViewFromLeft:(UIView *)view; - (void)showInWindowFromLeft; - (void)dismiss; @end .m // // YXPSheetView.m // YXPiOSClient // // Created by openthread on 7/27/12. // Copyright (c) 2012 __MyCompanyName__. All rights reserved. // #import "YXPActionSheet.h" #define BUTTON_LABEL_TAG 891204 @interface YXPActionSheet() + (UILabel *)buttonLabelWithText:(NSString *)text; - (void)setActionSheetHeight:(CGFloat)height; - (void)addButton:(UIButton *)button; - (void)resizeButtons; - (void)buttonTouched:(UIButton *)button; @end @implementation YXPActionSheet { UIView *_dimmView; UIImageView *_sheetBackgroundView; NSMutableArray *_buttonArray; } @synthesize delegate = _delegate; + (YXPActionSheet *)actionSheetWithCancelButtonTitle:(NSString *)cancelTitle destructiveButtonTitle:(NSString *)destructiveButtonTitle otherButtonTitles:(id)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION { YXPActionSheet *sheetView = [[YXPActionSheet alloc] initWithFrame:CGRectZero]; if(!sheetView) return nil; NSUInteger buttonIndex = 0; CGFloat height = 27.0f; if (destructiveButtonTitle) { UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.tag = buttonIndex++; button.frame = CGRectMake(0, height - 4.0f, 0.0f, 45.0f); [button setBackgroundImage:[[UIImage imageNamed:@"YXPActionSheetDestructiveButton.png"] stretchableImageWithLeftCapWidth:22 topCapHeight:22] forState:UIControlStateNormal]; UILabel *label = [YXPActionSheet buttonLabelWithText:destructiveButtonTitle]; [button addSubview:label]; [sheetView addButton:button]; height += 59.0f; } va_list args; va_start(args, otherButtonTitles); for (NSString *arg = otherButtonTitles; arg != nil; arg = va_arg(args, NSString*)) { UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.tag = buttonIndex++; button.frame = CGRectMake(0, height - 4.0f, 0.0f, 45.0f); [button setBackgroundImage:[[UIImage imageNamed:@"YXPActionSheetButton.png"] stretchableImageWithLeftCapWidth:22 topCapHeight:22] forState:UIControlStateNormal]; UILabel *label = [YXPActionSheet buttonLabelWithText:arg]; [button addSubview:label]; [sheetView addButton:button]; height += 59.0f; } va_end(args); if (cancelTitle) { UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.tag = buttonIndex++; button.frame = CGRectMake(0, height - 4.0f, 0.0f, 45.0f); [button setBackgroundImage:[[UIImage imageNamed:@"YXPActionSheetCancelButton.png"] stretchableImageWithLeftCapWidth:22 topCapHeight:22] forState:UIControlStateNormal]; UILabel *label = [YXPActionSheet buttonLabelWithText:cancelTitle]; [button addSubview:label]; [sheetView addButton:button]; height += 59.0f; } [sheetView setActionSheetHeight:height]; return sheetView; } - (id)initWithFrame:(CGRect)frame { CGRect screenRect = [[UIScreen mainScreen] bounds]; CGSize screenSize = screenRect.size; self = [super initWithFrame:(CGRect){CGPointZero,screenSize}]; if (self) { _buttonArray = [NSMutableArray array]; _dimmView = [[UIView alloc] initWithFrame:(CGRect){CGPointZero,screenSize}]; _dimmView.backgroundColor = [UIColor colorWithWhite:0.0f/255.0f alpha:0.5f]; [super addSubview:_dimmView]; _sheetBackgroundView = [[UIImageView alloc] initWithFrame:frame]; UIImage *backgroundImage = [UIImage imageNamed:@"YXPActionSheetBackground.png"]; backgroundImage = [backgroundImage stretchableImageWithLeftCapWidth:40 topCapHeight:40]; _sheetBackgroundView.userInteractionEnabled = YES; _sheetBackgroundView.image = backgroundImage; _sheetBackgroundView.userInteractionEnabled = YES; [super addSubview:_sheetBackgroundView]; } return self; } - (void)addSubview:(UIView *)view { [_sheetBackgroundView addSubview:view]; } - (void)showInView:(UIView *)view { [view addSubview:self]; _sheetBackgroundView.transform = CGAffineTransformIdentity; CGFloat height = _sheetBackgroundView.frame.size.height; CGFloat superViewHeight = view.frame.size.height; _dimmView.alpha = 0; _sheetBackgroundView.frame = CGRectMake(0, superViewHeight, view.frame.size.width, height); [self resizeButtons]; [UIView animateWithDuration:0.2 animations:^{ _dimmView.alpha = 1; _sheetBackgroundView.frame = CGRectMake(0, superViewHeight - height, view.frame.size.width, height); }]; } - (void)showInWindow { [self showInView:[[[UIApplication sharedApplication] delegate] window]]; } - (void)showInViewFromLeft:(UIView *)view { [view addSubview:self]; CGFloat height = _sheetBackgroundView.frame.size.height; CGFloat superViewHeight = view.frame.size.height; _dimmView.alpha = 0; CGRect originFrame = CGRectMake(-height / 2 - superViewHeight / 2, superViewHeight / 2 - height / 2, superViewHeight, height); _sheetBackgroundView.frame = originFrame; _sheetBackgroundView.transform = CGAffineTransformMakeRotation(M_PI / 2); [self resizeButtons]; [UIView animateWithDuration:0.2 animations:^{ _dimmView.alpha = 1; _sheetBackgroundView.center = CGPointMake(height / 2, _sheetBackgroundView.center.y); }]; } - (void)showInWindowFromLeft { [self showInViewFromLeft:[[[UIApplication sharedApplication] delegate] window]]; } - (void)dismiss { [UIView animateWithDuration:0.2 animations:^{ _dimmView.alpha = 0; if (CGAffineTransformEqualToTransform(_sheetBackgroundView.transform, CGAffineTransformMakeRotation(M_PI_2))) { CGFloat height = _sheetBackgroundView.frame.size.height; CGFloat superViewHeight = self.superview.frame.size.height; CGRect originFrame = CGRectMake(-height / 2 - superViewHeight / 2, superViewHeight / 2 - height / 2, superViewHeight, height); _sheetBackgroundView.frame = originFrame; } else { CGRect frame = _sheetBackgroundView.frame; frame.origin.y = self.superview.frame.size.height; _sheetBackgroundView.frame = frame; } } completion:^(BOOL finished) { [self removeFromSuperview]; }]; } #pragma mark - Private Methods + (UILabel *)buttonLabelWithText:(NSString *)text { UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 45)]; label.text = text; label.font = [UIFont systemFontOfSize:19.0f]; label.textColor = [UIColor whiteColor]; label.shadowColor = [UIColor colorWithRed:44.0f/255.0f green:46.0f/255.0f blue:48.0f/255.0f alpha:1.0f]; label.shadowOffset = CGSizeMake(0, -1.0f); label.backgroundColor = [UIColor clearColor]; label.textAlignment = UITextAlignmentCenter; label.text = text; label.tag = BUTTON_LABEL_TAG; return label; } - (void)resizeButtons { CGFloat frameWidth = _sheetBackgroundView.frame.size.width; if (CGAffineTransformEqualToTransform(_sheetBackgroundView.transform, CGAffineTransformMakeRotation(M_PI_2))) { frameWidth =_sheetBackgroundView.frame.size.height; } for (UIView *eachButton in _buttonArray) { CGRect buttonFrame = eachButton.frame; buttonFrame.origin.x = 22; buttonFrame.size.width = frameWidth - 44; eachButton.frame = buttonFrame; UIView *label = [eachButton viewWithTag:BUTTON_LABEL_TAG]; label.frame = CGRectMake(10, 0, eachButton.frame.size.width - 20, eachButton.frame.size.height); } } - (void)setActionSheetHeight:(CGFloat)height { _sheetBackgroundView.frame = CGRectMake(0, 0, 0, height); } - (void)addButton:(UIButton *)button { [_buttonArray addObject:button]; [button addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchUpInside]; [_sheetBackgroundView addSubview:button]; } - (void)buttonTouched:(UIButton *)button { if (self.delegate && [self.delegate respondsToSelector:@selector(actionSheet:clickedButtonAtIndex:buttonTitle:)]) { UILabel *label = (UILabel *)[button viewWithTag:BUTTON_LABEL_TAG]; [self.delegate actionSheet:self clickedButtonAtIndex:button.tag buttonTitle:label.text]; } [self dismiss]; } @end

a123456678 2019-12-02 03:12:31 0 浏览量 回答数 0

回答

Re如何用用js实现一个元素的hideshowhideshow这么循环的动画? 给你个css版本的 不要过渡效果很简单,把 [size=; font-size: 0.92857em,0.92857em]animation-timing-function设置为 [size=; font-size: 0.92857em,0.92857em]step-start即可解决你的问题。 #model {    width:150px;    height:50px;    background:skyblue;    animation:shine 1s step-start infinite;    -webkit-animation:shine 1s step-start infinite;}@keyframes shine {    0% {height:50px;}    50% {height:0px;}    100% {height:50px;}    }@-webkit-keyframes shine {    0% {height:50px;}    50% {height:0px;}    100% {height:50px;}}

小鸡博士 2019-12-01 23:49:57 0 浏览量 回答数 0

问题

关于设置CCSprite的框架解答

爵霸 2019-12-01 20:26:46 845 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播