How to make text as big as the width allows in flutter
I believe what you're looking for is FittedBox
.
BoxFit applies whichever 'fit' you want to stretch/scale the child to fit in the box. It doesn't perform a pure 'stretch' on the text but rather the space it should take up. You shouldn't specify the text's size at the same time.
That looks like this:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
MyAppState createState() {
return new MyAppState();
}
}
class MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: SafeArea(
child: Center(
child: Container(
color: Colors.blue,
width: 300.0,
height: 200.0,
child: FittedBox(
fit: BoxFit.contain,
child: Text("Whee"),
),
),
),
),
),
);
}
}
If you're wanting to actually 'stretch' the text (i.e. make the actual characters wider or taller) you'll have to do something a bit more custom.
If that's the case, look at CustomPaint, CustomPainter, TextPainter, and the Canvas translate & scale options. Basically, you would need to create a class extending CustomPainter in which you created a TextPainter, laid it out at a particular size, painted it onto the canvas, and then scaled it to fit the actual size of the CustomPainter (or do you scale the canvas first - I forget...). Then you'd pass an instance of that class to CustomPaint.
Force single line of text in element to fill width with CSS
Try this:
div {
text-align: justify;
}
div:after {
content: "";
display: inline-block;
width: 100%;
}
jsFiddle
Take a look here for more info.
Increase font-size to full width of screen
in gumroad its not a text its an image
but if you want to control your font size you can usefont-size: clamp(min size , 2vw, max size)
for example font-size: clamp(14px, 2vw, 20px)
you can read more here https://developer.mozilla.org/en-US/docs/Web/CSS/clamp()
Font scaling based on width of container
If the container is not the body, CSS Tricks covers all of your options in Fitting Text to a Container.
If the container is the body, what you are looking for is Viewport-percentage lengths:
The viewport-percentage lengths are relative to the size of the initial containing block. When the height or width of the initial containing block is changed, they are scaled accordingly. However, when the value of overflow on the root element is auto, any scroll bars are assumed not to exist.
The values are:
vw
(% of the viewport width)vh
(% of the viewport height)vi
(1% of the viewport size in the direction of the root element's inline axis)vb
(1% of the viewport size in the direction of the root element's block axis)vmin
(the smaller ofvw
orvh
)vmax
(the larger orvw
orvh
)
1 v* is equal to 1% of the initial containing block.
Using it looks like this:
p {
font-size: 4vw;
}
As you can see, when the viewport width increases, so do the font-size
, without needing to use media queries.
These values are a sizing unit, just like px
or em
, so they can be used to size other elements as well, such as width, margin, or padding.
Browser support is pretty good, but you'll likely need a fallback, such as:
p {
font-size: 16px;
font-size: 4vw;
}
Check out the support statistics: http://caniuse.com/#feat=viewport-units.
Also, check out CSS-Tricks for a broader look: Viewport Sized Typography
Here's a nice article about setting minimum/maximum sizes and exercising a bit more control over the sizes: Precise control over responsive typography
And here's an article about setting your size using calc() so that the text fills the viewport: http://codepen.io/CrocoDillon/pen/fBJxu
Also, please view this article, which uses a technique dubbed 'molten leading' to adjust the line-height as well. Molten Leading in CSS
Force text in a container take full width of parent element
Finally i am successful in creating a fiddle:
http://jsfiddle.net/Zword/zkS8W/
Fullscreen: http://jsfiddle.net/Zword/zkS8W/show/
JQuery/Javascript:
var h1=$('#innerC').html();
var h2=$('#colorize').html();
var l=h2.slice(-1);
var li=h2.lastIndexOf(l);
h2=h2.substring(0,li);
h1=h1.replace(/[ ]+/g," ");
htemp1=h1.replace(/ /g,".");
h2=h2.replace(/[ ]+/g," ");
htemp2=h2.replace(/ /g,".");
$(document).ready(function(){
$('#innerC').html(htemp1);
$('#colorize').html(htemp2);
var childW=$('#child').width();
var innerCW=$('#innerC').width()+$('#colorize').width();
var s=1;
while(innerCW<childW)
{
$('#innerC').css({'letter-spacing':''+s+'px'});
$('#colorize').css({'letter-spacing':''+s+'px'});
innerCW=$('#innerC').width()+$('#colorize').width();
s++;
}
$('#innerC').html(h1);
$('#colorize').html(h2);
$('#colorize2').html(l);
});
Note : Add the text with normal/black color to span with id="innerC"
.Add the text with different color to span with id="colorize"
and change color in .lastcolor{ color:red; }
Style input element to fill remaining width of its container
as much as everyone hates tables for layout, they do help with stuff like this, either using explicit table tags or using display:table-cell
<div style="width:300px; display:table">
<label for="MyInput" style="display:table-cell; width:1px">label text</label>
<input type="text" id="MyInput" style="display:table-cell; width:100%" />
</div>
Related Topics
Local Website Renders Differently Using (Ip Address or MAChine Name) VS Localhost
How to Get IE8 to Accept a CSS :Before Tag
Blur Effect on the Entire Webpage
Disable the Ctrl/Wheel Zoom Effect at Runtime
Vertical Alignment of Image Inside a Div
Responsive Bootstrap Designing in Cakephp 3X
Can't Style Text on Input Submit Button as Bold
Why Do 'Foo Bar' and 'Foo > Bar' Have the Same Specificity in CSS
CSS Grid - Repeatable Grid-Template-Areas
Internet Explorer Box Model - What Is Offset
Override CSS Z-Index Stacking Context
Prevent Twitter Bootstrap Empty <Dd> Filling with Next <Dd> Value
Changing <A> Link Underline Color
Using CSS to Duplicate HTML Elements
Is There a CSS Workaround for Firefox' Bug: Inline-Block + First-Letter with Changed Size