Blazor 앱에서 section 태그를 지정하여 화면 점프
10168 단어 BlazorASP.NET_Core
개발 환경
Windows10
Visual Studio 2019
.Net Core 3.0
Blazor template Version: 3.0.0-preview9.19465.2
index.html에 JavaScript 작성
wwwroot\index.html
에 JavaScript를 작성합니다. 화면상에서는 이 Script의 처리가 불립니다.index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>BlazorApp9</title>
<base href="/" />
<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
<link href="css/site.css" rel="stylesheet" />
<!--scrollIntoViewを行う処理-->
<script>
window.scrollToElementId = (elementId) => {
console.info('scrolling to element', elementId);
var element = document.getElementById(elementId);
if (!element) {
console.warn('element was not found', elementId);
return false;
}
element.scrollIntoView();
return true;
}
</script>
</head>
<body>
<app>Loading...</app>
<script src="_framework/blazor.webassembly.js"></script>
</body>
</html>
호출자 처리
razor 페이지에서 JavaScript 처리를 호출합니다. 이 예에서는 기본 프로젝트
Pages\FetchData.razor
에 처리를 작성합니다.FetchData.razor
@page "/fetchdata"
@inject HttpClient Http
@inject IJSRuntime JSRuntime @*追加*@
@*Topのsection*@
<section id="top" />
<h1>Weather forecast</h1>
<p>This component demonstrates fetching data from the server.</p>
@*下へジャンプするボタン*@
<button class="btn btn-primary" @onclick="onbottom">下へ</button>
@if (forecasts == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table">
<thead>
<tr>
<th>Date</th>
<th>Temp. (C)</th>
<th>Temp. (F)</th>
<th>Summary</th>
</tr>
</thead>
<tbody>
@foreach (var forecast in forecasts)
{
<tr>
<td>@forecast.Date.ToShortDateString()</td>
<td>@forecast.TemperatureC</td>
<td>@forecast.TemperatureF</td>
<td>@forecast.Summary</td>
</tr>
}
</tbody>
</table>
}
@*bottomのsection*@
<section id="bottom" />
@*上へジャンプするボタン*@
<button class="btn btn-primary" @onclick="ontop">上へ</button>
@code {
/// <summary>
/// 下へジャンプ
/// </summary>
void onbottom()
{
JSRuntime.InvokeAsync<bool>("scrollToElementId", "bottom");
}
/// <summary>
/// 上へジャンプ
/// </summary>
void ontop()
{
JSRuntime.InvokeAsync<bool>("scrollToElementId", "top");
}
WeatherForecast[] forecasts;
protected override async Task OnInitializedAsync()
{
var tmp = await Http.GetJsonAsync<WeatherForecast[]>("sample-data/weather.json");
var l = new List<WeatherForecast>();
for (int i = 0; i < 5; i++)
{
l.AddRange(tmp);
}
forecasts = l.ToArray();
}
public class WeatherForecast
{
public DateTime Date { get; set; }
public int TemperatureC { get; set; }
public string Summary { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
}
움직임이 있는 페이지를 만들려고 하면 아직 JavaScript가 필요하다고 느낍니다.
참고 기사
Scroll to specified part of page when clicking top navigation link in Blazor
Blazor의 JavaScript 상호 운용 기능을 조금 코드 읽기
Reference
이 문제에 관하여(Blazor 앱에서 section 태그를 지정하여 화면 점프), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kimuradesu/items/36aa7475de2d94c4216d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)